apply: tests for the --3way option
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano committed
Jun 12, 2012 at 22:57 UTC
fdac508933cb2b5265d0bb239eaa50aaa5e64981
1 file changed
+54
t/t4108-apply-threeway.sh
+54
@@ -100,4 +100,58 @@ test_expect_success 'apply with --3way with rerere enabled' '
100
test_cmp expect one
101
'
102
103
+test_expect_success 'apply -3 with add/add conflict setup' '
104
+ git reset --hard &&
105
+
106
+ git checkout -b adder &&
107
+ create_file 1 2 3 4 5 6 7 >three &&
108
+ create_file 1 2 3 4 5 6 7 >four &&
109
+ git add three four &&
110
+ git commit -m "add three and four" &&
111
+
112
+ git checkout -b another adder^ &&
113
+ create_file 1 2 3 4 5 6 7 >three &&
114
+ create_file 1 2 3 four 5 6 7 >four &&
115
+ git add three four &&
116
+ git commit -m "add three and four" &&
117
+
118
+ # Merging another should be similar to applying this patch
119
+ git diff adder...another >P.diff &&
120
+
121
+ git checkout adder^0 &&
122
+ test_must_fail git merge --no-commit another &&
123
+ git ls-files -s >expect.ls &&
124
+ git diff HEAD | sanitize_conflicted_diff >expect.diff
125
+'
126
+
127
+test_expect_success 'apply -3 with add/add conflict' '
128
+ # should fail to apply ...
129
+ git reset --hard &&
130
+ git checkout adder^0 &&
131
+ test_must_fail git apply --index --3way P.diff &&
132
+ # ... and leave conflicts in the index and in the working tree
133
+ git ls-files -s >actual.ls &&
134
+ git diff HEAD | sanitize_conflicted_diff >actual.diff &&
135
+
136
+ # The result should resemble the corresponding merge
137
+ test_cmp expect.ls actual.ls &&
138
+ test_cmp expect.diff actual.diff
139
+'
140
+
141
+test_expect_success 'apply -3 with add/add conflict (dirty working tree)' '
142
+ # should fail to apply ...
143
+ git reset --hard &&
144
+ git checkout adder^0 &&
145
+ echo >>four &&
146
+ cat four >four.save &&
147
+ cat three >three.save &&
148
+ git ls-files -s >expect.ls &&
149
+ test_must_fail git apply --index --3way P.diff &&
150
+ # ... and should not touch anything
151
+ git ls-files -s >actual.ls &&
152
+ test_cmp expect.ls actual.ls &&
153
+ test_cmp four.save four &&
154
+ test_cmp three.save three
155
+'
156
+
157
test_done