t6035: use test_ln_s_add to remove SYMLINKS prerequisite

All tests in t6035 are protected by SYMLINKS. But that is not necessary, because a lot of the functionality can be tested provided symbolic link entries enter the index and object data base. Use test_ln_s_add for this purpose. Some test cases do test the presence of symbolic links on the file system. Move these tests into separate test cases that remain protected by SYMLINKS. There is one instance of expect_failure. There is a possibility that this test case fails differently depending on whether SYMLINKS is present or not; but this is not the case. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Johannes Sixt committed Jun 7, 2013 at 22:53 UTC bfd7804ee3d5285aa8598497995efe3f697ea7fd
1 file changed +47 -26
t/t6035-merge-dir-to-symlink.sh
+47 -26
@@ -3,7 +3,7 @@
3 test_description='merging when a directory was replaced with a symlink'
4 . ./test-lib.sh
5
6 -test_expect_success SYMLINKS 'create a commit where dir a/b changed to symlink' '
6 +test_expect_success 'create a commit where dir a/b changed to symlink' '
7 mkdir -p a/b/c a/b-2/c &&
8 > a/b/c/d &&
9 > a/b-2/c/d &&
@@ -12,12 +12,12 @@ test_expect_success SYMLINKS 'create a commit where dir a/b changed to symlink'
12 git commit -m base &&
13 git tag start &&
14 rm -rf a/b &&
15 - ln -s b-2 a/b &&
15 git add -A &&
16 + test_ln_s_add b-2 a/b &&
17 git commit -m "dir to symlink"
18 '
19
20 -test_expect_success SYMLINKS 'checkout does not clobber untracked symlink' '
20 +test_expect_success 'checkout does not clobber untracked symlink' '
21 git checkout HEAD^0 &&
22 git reset --hard master &&
23 git rm --cached a/b &&
@@ -25,7 +25,7 @@ test_expect_success SYMLINKS 'checkout does not clobber untracked symlink' '
25 test_must_fail git checkout start^0
26 '
27
28 -test_expect_success SYMLINKS 'a/b-2/c/d is kept when clobbering symlink b' '
28 +test_expect_success 'a/b-2/c/d is kept when clobbering symlink b' '
29 git checkout HEAD^0 &&
30 git reset --hard master &&
31 git rm --cached a/b &&
@@ -34,14 +34,14 @@ test_expect_success SYMLINKS 'a/b-2/c/d is kept when clobbering symlink b' '
34 test -f a/b-2/c/d
35 '
36
37 -test_expect_success SYMLINKS 'checkout should not have deleted a/b-2/c/d' '
37 +test_expect_success 'checkout should not have deleted a/b-2/c/d' '
38 git checkout HEAD^0 &&
39 git reset --hard master &&
40 git checkout start^0 &&
41 test -f a/b-2/c/d
42 '
43
44 -test_expect_success SYMLINKS 'setup for merge test' '
44 +test_expect_success 'setup for merge test' '
45 git reset --hard &&
46 test -f a/b-2/c/d &&
47 echo x > a/x &&
@@ -50,39 +50,51 @@ test_expect_success SYMLINKS 'setup for merge test' '
50 git tag baseline
51 '
52
53 -test_expect_success SYMLINKS 'Handle D/F conflict, do not lose a/b-2/c/d in merge (resolve)' '
53 +test_expect_success 'Handle D/F conflict, do not lose a/b-2/c/d in merge (resolve)' '
54 git reset --hard &&
55 git checkout baseline^0 &&
56 git merge -s resolve master &&
57 - test -h a/b &&
57 test -f a/b-2/c/d
58 '
59
61 -test_expect_success SYMLINKS 'Handle D/F conflict, do not lose a/b-2/c/d in merge (recursive)' '
60 +test_expect_success SYMLINKS 'a/b was resolved as symlink' '
61 + test -h a/b
62 +'
63 +
64 +test_expect_success 'Handle D/F conflict, do not lose a/b-2/c/d in merge (recursive)' '
65 git reset --hard &&
66 git checkout baseline^0 &&
67 git merge -s recursive master &&
65 - test -h a/b &&
68 test -f a/b-2/c/d
69 '
70
69 -test_expect_success SYMLINKS 'Handle F/D conflict, do not lose a/b-2/c/d in merge (resolve)' '
71 +test_expect_success SYMLINKS 'a/b was resolved as symlink' '
72 + test -h a/b
73 +'
74 +
75 +test_expect_success 'Handle F/D conflict, do not lose a/b-2/c/d in merge (resolve)' '
76 git reset --hard &&
77 git checkout master^0 &&
78 git merge -s resolve baseline^0 &&
73 - test -h a/b &&
79 test -f a/b-2/c/d
80 '
81
77 -test_expect_success SYMLINKS 'Handle F/D conflict, do not lose a/b-2/c/d in merge (recursive)' '
82 +test_expect_success SYMLINKS 'a/b was resolved as symlink' '
83 + test -h a/b
84 +'
85 +
86 +test_expect_success 'Handle F/D conflict, do not lose a/b-2/c/d in merge (recursive)' '
87 git reset --hard &&
88 git checkout master^0 &&
89 git merge -s recursive baseline^0 &&
81 - test -h a/b &&
90 test -f a/b-2/c/d
91 '
92
85 -test_expect_failure SYMLINKS 'do not lose untracked in merge (resolve)' '
93 +test_expect_success SYMLINKS 'a/b was resolved as symlink' '
94 + test -h a/b
95 +'
96 +
97 +test_expect_failure 'do not lose untracked in merge (resolve)' '
98 git reset --hard &&
99 git checkout baseline^0 &&
100 >a/b/c/e &&
@@ -91,7 +103,7 @@ test_expect_failure SYMLINKS 'do not lose untracked in merge (resolve)' '
103 test -f a/b-2/c/d
104 '
105
94 -test_expect_success SYMLINKS 'do not lose untracked in merge (recursive)' '
106 +test_expect_success 'do not lose untracked in merge (recursive)' '
107 git reset --hard &&
108 git checkout baseline^0 &&
109 >a/b/c/e &&
@@ -100,52 +112,61 @@ test_expect_success SYMLINKS 'do not lose untracked in merge (recursive)' '
112 test -f a/b-2/c/d
113 '
114
103 -test_expect_success SYMLINKS 'do not lose modifications in merge (resolve)' '
115 +test_expect_success 'do not lose modifications in merge (resolve)' '
116 git reset --hard &&
117 git checkout baseline^0 &&
118 echo more content >>a/b/c/d &&
119 test_must_fail git merge -s resolve master
120 '
121
110 -test_expect_success SYMLINKS 'do not lose modifications in merge (recursive)' '
122 +test_expect_success 'do not lose modifications in merge (recursive)' '
123 git reset --hard &&
124 git checkout baseline^0 &&
125 echo more content >>a/b/c/d &&
126 test_must_fail git merge -s recursive master
127 '
128
117 -test_expect_success SYMLINKS 'setup a merge where dir a/b-2 changed to symlink' '
129 +test_expect_success 'setup a merge where dir a/b-2 changed to symlink' '
130 git reset --hard &&
131 git checkout start^0 &&
132 rm -rf a/b-2 &&
121 - ln -s b a/b-2 &&
133 git add -A &&
134 + test_ln_s_add b a/b-2 &&
135 git commit -m "dir a/b-2 to symlink" &&
136 git tag test2
137 '
138
127 -test_expect_success SYMLINKS 'merge should not have D/F conflicts (resolve)' '
139 +test_expect_success 'merge should not have D/F conflicts (resolve)' '
140 git reset --hard &&
141 git checkout baseline^0 &&
142 git merge -s resolve test2 &&
131 - test -h a/b-2 &&
143 test -f a/b/c/d
144 '
145
135 -test_expect_success SYMLINKS 'merge should not have D/F conflicts (recursive)' '
146 +test_expect_success SYMLINKS 'a/b-2 was resolved as symlink' '
147 + test -h a/b-2
148 +'
149 +
150 +test_expect_success 'merge should not have D/F conflicts (recursive)' '
151 git reset --hard &&
152 git checkout baseline^0 &&
153 git merge -s recursive test2 &&
139 - test -h a/b-2 &&
154 test -f a/b/c/d
155 '
156
143 -test_expect_success SYMLINKS 'merge should not have F/D conflicts (recursive)' '
157 +test_expect_success SYMLINKS 'a/b-2 was resolved as symlink' '
158 + test -h a/b-2
159 +'
160 +
161 +test_expect_success 'merge should not have F/D conflicts (recursive)' '
162 git reset --hard &&
163 git checkout -b foo test2 &&
164 git merge -s recursive baseline^0 &&
147 - test -h a/b-2 &&
165 test -f a/b/c/d
166 '
167
168 +test_expect_success SYMLINKS 'a/b-2 was resolved as symlink' '
169 + test -h a/b-2
170 +'
171 +
172 test_done