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