summaryrefslogtreecommitdiffstats
path: root/t/t9834-git-p4-file-dir-bug.sh
blob: dac67e89d7d720a916eec8a533d9b1f05101525a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/sh

test_description='git p4 directory/file bug handling

This test creates files and directories with the same name in perforce and
checks that git-p4 recovers from the error at the same time as the perforce
repository.'

. ./lib-git-p4.sh

test_expect_success 'start p4d' '
	start_p4d &&
	{ p4 configure set submit.collision.check=0 || :; }
'

test_expect_success 'init depot' '
	(
		cd "$cli" &&

		touch add_file_add_dir_del_file add_file_add_dir_del_dir &&
		p4 add add_file_add_dir_del_file add_file_add_dir_del_dir &&
		mkdir add_dir_add_file_del_file add_dir_add_file_del_dir &&
		touch add_dir_add_file_del_file/file add_dir_add_file_del_dir/file &&
		p4 add add_dir_add_file_del_file/file add_dir_add_file_del_dir/file &&
		p4 submit -d "add initial" &&

		rm -f add_file_add_dir_del_file add_file_add_dir_del_dir &&
		mkdir add_file_add_dir_del_file add_file_add_dir_del_dir &&
		touch add_file_add_dir_del_file/file add_file_add_dir_del_dir/file &&
		p4 add add_file_add_dir_del_file/file add_file_add_dir_del_dir/file &&
		rm -rf add_dir_add_file_del_file add_dir_add_file_del_dir &&
		touch add_dir_add_file_del_file add_dir_add_file_del_dir &&
		p4 add add_dir_add_file_del_file add_dir_add_file_del_dir &&
		p4 submit -d "add conflicting" &&

		p4 delete -k add_file_add_dir_del_file &&
		p4 delete -k add_file_add_dir_del_dir/file &&
		p4 delete -k add_dir_add_file_del_file &&
		p4 delete -k add_dir_add_file_del_dir/file &&
		p4 submit -d "delete conflicting" &&

		p4 delete -k "add_file_add_dir_del_file/file" &&
		p4 delete -k "add_file_add_dir_del_dir" &&
		p4 delete -k "add_dir_add_file_del_file/file" &&
		p4 delete -k "add_dir_add_file_del_dir" &&
		p4 submit -d "delete remaining"
	)
'

test_expect_success 'clone with git-p4' '
	git p4 clone --dest="$git" //depot/@1,3
'

test_expect_success 'check contents' '
	test_path_is_dir "$git/add_file_add_dir_del_file" &&
	test_path_is_file "$git/add_file_add_dir_del_dir" &&
	test_path_is_dir "$git/add_dir_add_file_del_file" &&
	test_path_is_file "$git/add_dir_add_file_del_dir"
'

test_expect_success 'rebase and check empty' '
	git -C "$git" p4 rebase &&

	test_path_is_missing "$git/add_file_add_dir_del_file" &&
	test_path_is_missing "$git/add_file_add_dir_del_dir" &&
	test_path_is_missing "$git/add_dir_add_file_del_file" &&
	test_path_is_missing "$git/add_dir_add_file_del_dir"
'

test_done