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