git-p4: add failing test for "don't exclude other files with same prefix"

In preparation for a fix, add a failing test case to test that git-p4 doesn't exclude files with the same prefix unintentionally when exclude paths are specified without a trailing /. I.e., don't exclude "//depot/file_dont_exclude" if run with "-//depot/file". or don't exclude "//depot/discard_file_not" if run with "-//depot/discard_file". Signed-off-by: Andrey Mazo <amazo@checkvideo.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Mazo, Andrey committed Apr 1, 2019 at 18:02 UTC d6045201fcec7bd9738fea4daf9d176d8df9f5ba
1 file changed +46 -5
t/t9817-git-p4-exclude.sh
+46 -5
@@ -22,7 +22,9 @@ test_expect_success 'create exclude repo' '
22 mkdir -p wanted discard &&
23 echo wanted >wanted/foo &&
24 echo discard >discard/foo &&
25 - p4 add wanted/foo discard/foo &&
25 + echo discard_file >discard_file &&
26 + echo discard_file_not >discard_file_not &&
27 + p4 add wanted/foo discard/foo discard_file discard_file_not &&
28 p4 submit -d "initial revision"
29 )
30 '
@@ -33,7 +35,9 @@ test_expect_success 'check the repo was created correctly' '
35 (
36 cd "$git" &&
37 test_path_is_file wanted/foo &&
36 - test_path_is_file discard/foo
38 + test_path_is_file discard/foo &&
39 + test_path_is_file discard_file &&
40 + test_path_is_file discard_file_not
41 )
42 '
43
@@ -43,7 +47,21 @@ test_expect_success 'clone, excluding part of repo' '
47 (
48 cd "$git" &&
49 test_path_is_file wanted/foo &&
46 - test_path_is_missing discard/foo
50 + test_path_is_missing discard/foo &&
51 + test_path_is_file discard_file &&
52 + test_path_is_file discard_file_not
53 + )
54 +'
55 +
56 +test_expect_failure 'clone, excluding single file, no trailing /' '
57 + test_when_finished cleanup_git &&
58 + git p4 clone -//depot/discard_file --dest="$git" //depot/...@all &&
59 + (
60 + cd "$git" &&
61 + test_path_is_file wanted/foo &&
62 + test_path_is_file discard/foo &&
63 + test_path_is_missing discard_file &&
64 + test_path_is_file discard_file_not
65 )
66 '
67
@@ -52,15 +70,38 @@ test_expect_success 'clone, then sync with exclude' '
70 git p4 clone -//depot/discard/... --dest="$git" //depot/...@all &&
71 (
72 cd "$cli" &&
55 - p4 edit wanted/foo discard/foo &&
73 + p4 edit wanted/foo discard/foo discard_file_not &&
74 date >>wanted/foo &&
75 date >>discard/foo &&
76 + date >>discard_file_not &&
77 p4 submit -d "updating" &&
78
79 cd "$git" &&
80 git p4 sync -//depot/discard/... &&
81 test_path_is_file wanted/foo &&
63 - test_path_is_missing discard/foo
82 + test_path_is_missing discard/foo &&
83 + test_path_is_file discard_file &&
84 + test_path_is_file discard_file_not
85 + )
86 +'
87 +
88 +test_expect_failure 'clone, then sync with exclude, no trailing /' '
89 + test_when_finished cleanup_git &&
90 + git p4 clone -//depot/discard/... -//depot/discard_file --dest="$git" //depot/...@all &&
91 + (
92 + cd "$cli" &&
93 + p4 edit wanted/foo discard/foo discard_file_not &&
94 + date >>wanted/foo &&
95 + date >>discard/foo &&
96 + date >>discard_file_not &&
97 + p4 submit -d "updating" &&
98 +
99 + cd "$git" &&
100 + git p4 sync -//depot/discard/... -//depot/discard_file &&
101 + test_path_is_file wanted/foo &&
102 + test_path_is_missing discard/foo &&
103 + test_path_is_missing discard_file &&
104 + test_path_is_file discard_file_not
105 )
106 '
107