Teach read-tree the -n|--dry-run option

The option can be used to check if read-tree with the same set of other options like "-m" and "-u" would succeed without actually changing either the index or the working tree. The relevant tests in the t10?? range were extended to do a read-tree -n before the real read-tree to make sure neither the index nor any local files were changed with -n and the same exit code as without -n is returned. The helper functions added for that purpose reside in the new t/lib-read-tree.sh file. The only exception is #13 in t1004 ("unlinking an un-unlink-able symlink"). As this is an issue of wrong directory permissions it is not detected with -n. Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jens Lehmann committed May 25, 2011 at 22:10 UTC ea5070c91f23e41a88dec48d2f8d96444c2d647a
12 files changed +198 -140
Documentation/git-read-tree.txt
+5
@@ -53,6 +53,11 @@ OPTIONS
53 trees that are not directly related to the current
54 working tree status into a temporary index file.
55
56 +-n::
57 +--dry-run::
58 + Check if the command would error out, without updating the index
59 + nor the files in the working tree for real.
60 +
61 -v::
62 Show the progress of checking files out.
63
builtin/read-tree.c
+2 -1
@@ -130,6 +130,7 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
130 PARSE_OPT_NONEG, exclude_per_directory_cb },
131 OPT_SET_INT('i', NULL, &opts.index_only,
132 "don't check the working tree after merging", 1),
133 + OPT__DRY_RUN(&opts.dry_run, "don't update the index or the work tree"),
134 OPT_SET_INT(0, "no-sparse-checkout", &opts.skip_sparse_checkout,
135 "skip applying sparse checkout filter", 1),
136 OPT_SET_INT(0, "debug-unpack", &opts.debug_unpack,
@@ -219,7 +220,7 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
220 if (unpack_trees(nr_trees, t, &opts))
221 return 128;
222
222 - if (opts.debug_unpack)
223 + if (opts.debug_unpack || opts.dry_run)
224 return 0; /* do not write the index out */
225
226 /*
t/lib-read-tree.sh new
+43
@@ -0,0 +1,43 @@
1 +#!/bin/sh
2 +#
3 +# Helper functions to check if read-tree would succeed/fail as expected with
4 +# and without the dry-run option. They also test that the dry-run does not
5 +# write the index and that together with -u it doesn't touch the work tree.
6 +#
7 +read_tree_must_succeed () {
8 + git ls-files -s >pre-dry-run &&
9 + git read-tree -n "$@" &&
10 + git ls-files -s >post-dry-run &&
11 + test_cmp pre-dry-run post-dry-run &&
12 + git read-tree "$@"
13 +}
14 +
15 +read_tree_must_fail () {
16 + git ls-files -s >pre-dry-run &&
17 + test_must_fail git read-tree -n "$@" &&
18 + git ls-files -s >post-dry-run &&
19 + test_cmp pre-dry-run post-dry-run &&
20 + test_must_fail git read-tree "$@"
21 +}
22 +
23 +read_tree_u_must_succeed () {
24 + git ls-files -s >pre-dry-run &&
25 + git diff-files -p >pre-dry-run-wt &&
26 + git read-tree -n "$@" &&
27 + git ls-files -s >post-dry-run &&
28 + git diff-files -p >post-dry-run-wt &&
29 + test_cmp pre-dry-run post-dry-run &&
30 + test_cmp pre-dry-run-wt post-dry-run-wt &&
31 + git read-tree "$@"
32 +}
33 +
34 +read_tree_u_must_fail () {
35 + git ls-files -s >pre-dry-run &&
36 + git diff-files -p >pre-dry-run-wt &&
37 + test_must_fail git read-tree -n "$@" &&
38 + git ls-files -s >post-dry-run &&
39 + git diff-files -p >post-dry-run-wt &&
40 + test_cmp pre-dry-run post-dry-run &&
41 + test_cmp pre-dry-run-wt post-dry-run-wt &&
42 + test_must_fail git read-tree "$@"
43 +}
t/t1000-read-tree-m-3way.sh
+41 -40
@@ -72,6 +72,7 @@ In addition:
72
73 '
74 . ./test-lib.sh
75 +. "$TEST_DIRECTORY"/lib-read-tree.sh
76 . "$TEST_DIRECTORY"/lib-read-tree-m-3way.sh
77
78 ################################################################
@@ -137,7 +138,7 @@ test_expect_success \
138 '3-way merge with git read-tree -m, empty cache' \
139 "rm -fr [NDMALTS][NDMALTSF] Z &&
140 rm .git/index &&
140 - git read-tree -m $tree_O $tree_A $tree_B &&
141 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
142 check_result"
143
144 # This starts out with the first head, which is the normal
@@ -146,9 +147,9 @@ test_expect_success \
147 '3-way merge with git read-tree -m, match H' \
148 "rm -fr [NDMALTS][NDMALTSF] Z &&
149 rm .git/index &&
149 - git read-tree $tree_A &&
150 + read_tree_must_succeed $tree_A &&
151 git checkout-index -f -u -a &&
151 - git read-tree -m $tree_O $tree_A $tree_B &&
152 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
153 check_result"
154
155 : <<\END_OF_CASE_TABLE
@@ -211,7 +212,7 @@ test_expect_success '1 - must not have an entry not in A.' "
212 rm -f .git/index XX &&
213 echo XX >XX &&
214 git update-index --add XX &&
214 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
215 + read_tree_must_fail -m $tree_O $tree_A $tree_B
216 "
217
218 test_expect_success \
@@ -219,7 +220,7 @@ test_expect_success \
220 "rm -f .git/index NA &&
221 cp .orig-B/NA NA &&
222 git update-index --add NA &&
222 - git read-tree -m $tree_O $tree_A $tree_B"
223 + read_tree_must_succeed -m $tree_O $tree_A $tree_B"
224
225 test_expect_success \
226 '2 - matching B alone is OK in !O && !A && B case.' \
@@ -227,14 +228,14 @@ test_expect_success \
228 cp .orig-B/NA NA &&
229 git update-index --add NA &&
230 echo extra >>NA &&
230 - git read-tree -m $tree_O $tree_A $tree_B"
231 + read_tree_must_succeed -m $tree_O $tree_A $tree_B"
232
233 test_expect_success \
234 '3 - must match A in !O && A && !B case.' \
235 "rm -f .git/index AN &&
236 cp .orig-A/AN AN &&
237 git update-index --add AN &&
237 - git read-tree -m $tree_O $tree_A $tree_B &&
238 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
239 check_result"
240
241 test_expect_success \
@@ -243,7 +244,7 @@ test_expect_success \
244 cp .orig-A/AN AN &&
245 git update-index --add AN &&
246 echo extra >>AN &&
246 - git read-tree -m $tree_O $tree_A $tree_B"
247 + read_tree_must_succeed -m $tree_O $tree_A $tree_B"
248
249 test_expect_success \
250 '3 (fail) - must match A in !O && A && !B case.' "
@@ -251,7 +252,7 @@ test_expect_success \
252 cp .orig-A/AN AN &&
253 echo extra >>AN &&
254 git update-index --add AN &&
254 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
255 + read_tree_must_fail -m $tree_O $tree_A $tree_B
256 "
257
258 test_expect_success \
@@ -259,7 +260,7 @@ test_expect_success \
260 "rm -f .git/index AA &&
261 cp .orig-A/AA AA &&
262 git update-index --add AA &&
262 - git read-tree -m $tree_O $tree_A $tree_B &&
263 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
264 check_result"
265
266 test_expect_success \
@@ -268,7 +269,7 @@ test_expect_success \
269 cp .orig-A/AA AA &&
270 git update-index --add AA &&
271 echo extra >>AA &&
271 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
272 + read_tree_must_fail -m $tree_O $tree_A $tree_B
273 "
274
275 test_expect_success \
@@ -277,7 +278,7 @@ test_expect_success \
278 cp .orig-A/AA AA &&
279 echo extra >>AA &&
280 git update-index --add AA &&
280 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
281 + read_tree_must_fail -m $tree_O $tree_A $tree_B
282 "
283
284 test_expect_success \
@@ -285,7 +286,7 @@ test_expect_success \
286 "rm -f .git/index LL &&
287 cp .orig-A/LL LL &&
288 git update-index --add LL &&
288 - git read-tree -m $tree_O $tree_A $tree_B &&
289 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
290 check_result"
291
292 test_expect_success \
@@ -294,7 +295,7 @@ test_expect_success \
295 cp .orig-A/LL LL &&
296 git update-index --add LL &&
297 echo extra >>LL &&
297 - git read-tree -m $tree_O $tree_A $tree_B &&
298 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
299 check_result"
300
301 test_expect_success \
@@ -303,7 +304,7 @@ test_expect_success \
304 cp .orig-A/LL LL &&
305 echo extra >>LL &&
306 git update-index --add LL &&
306 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
307 + read_tree_must_fail -m $tree_O $tree_A $tree_B
308 "
309
310 test_expect_success \
@@ -311,7 +312,7 @@ test_expect_success \
312 rm -f .git/index DD &&
313 echo DD >DD &&
314 git update-index --add DD &&
314 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
315 + read_tree_must_fail -m $tree_O $tree_A $tree_B
316 "
317
318 test_expect_success \
@@ -319,7 +320,7 @@ test_expect_success \
320 rm -f .git/index DM &&
321 cp .orig-B/DM DM &&
322 git update-index --add DM &&
322 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
323 + read_tree_must_fail -m $tree_O $tree_A $tree_B
324 "
325
326 test_expect_success \
@@ -327,7 +328,7 @@ test_expect_success \
328 rm -f .git/index DN &&
329 cp .orig-B/DN DN &&
330 git update-index --add DN &&
330 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
331 + read_tree_must_fail -m $tree_O $tree_A $tree_B
332 "
333
334 test_expect_success \
@@ -335,7 +336,7 @@ test_expect_success \
336 "rm -f .git/index MD &&
337 cp .orig-A/MD MD &&
338 git update-index --add MD &&
338 - git read-tree -m $tree_O $tree_A $tree_B &&
339 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
340 check_result"
341
342 test_expect_success \
@@ -344,7 +345,7 @@ test_expect_success \
345 cp .orig-A/MD MD &&
346 git update-index --add MD &&
347 echo extra >>MD &&
347 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
348 + read_tree_must_fail -m $tree_O $tree_A $tree_B
349 "
350
351 test_expect_success \
@@ -353,7 +354,7 @@ test_expect_success \
354 cp .orig-A/MD MD &&
355 echo extra >>MD &&
356 git update-index --add MD &&
356 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
357 + read_tree_must_fail -m $tree_O $tree_A $tree_B
358 "
359
360 test_expect_success \
@@ -361,7 +362,7 @@ test_expect_success \
362 "rm -f .git/index ND &&
363 cp .orig-A/ND ND &&
364 git update-index --add ND &&
364 - git read-tree -m $tree_O $tree_A $tree_B &&
365 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
366 check_result"
367
368 test_expect_success \
@@ -370,7 +371,7 @@ test_expect_success \
371 cp .orig-A/ND ND &&
372 git update-index --add ND &&
373 echo extra >>ND &&
373 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
374 + read_tree_must_fail -m $tree_O $tree_A $tree_B
375 "
376
377 test_expect_success \
@@ -379,7 +380,7 @@ test_expect_success \
380 cp .orig-A/ND ND &&
381 echo extra >>ND &&
382 git update-index --add ND &&
382 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
383 + read_tree_must_fail -m $tree_O $tree_A $tree_B
384 "
385
386 test_expect_success \
@@ -387,7 +388,7 @@ test_expect_success \
388 "rm -f .git/index MM &&
389 cp .orig-A/MM MM &&
390 git update-index --add MM &&
390 - git read-tree -m $tree_O $tree_A $tree_B &&
391 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
392 check_result"
393
394 test_expect_success \
@@ -396,7 +397,7 @@ test_expect_success \
397 cp .orig-A/MM MM &&
398 git update-index --add MM &&
399 echo extra >>MM &&
399 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
400 + read_tree_must_fail -m $tree_O $tree_A $tree_B
401 "
402
403 test_expect_success \
@@ -405,7 +406,7 @@ test_expect_success \
406 cp .orig-A/MM MM &&
407 echo extra >>MM &&
408 git update-index --add MM &&
408 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
409 + read_tree_must_fail -m $tree_O $tree_A $tree_B
410 "
411
412 test_expect_success \
@@ -413,7 +414,7 @@ test_expect_success \
414 "rm -f .git/index SS &&
415 cp .orig-A/SS SS &&
416 git update-index --add SS &&
416 - git read-tree -m $tree_O $tree_A $tree_B &&
417 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
418 check_result"
419
420 test_expect_success \
@@ -422,7 +423,7 @@ test_expect_success \
423 cp .orig-A/SS SS &&
424 git update-index --add SS &&
425 echo extra >>SS &&
425 - git read-tree -m $tree_O $tree_A $tree_B &&
426 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
427 check_result"
428
429 test_expect_success \
@@ -431,7 +432,7 @@ test_expect_success \
432 cp .orig-A/SS SS &&
433 echo extra >>SS &&
434 git update-index --add SS &&
434 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
435 + read_tree_must_fail -m $tree_O $tree_A $tree_B
436 "
437
438 test_expect_success \
@@ -439,7 +440,7 @@ test_expect_success \
440 "rm -f .git/index MN &&
441 cp .orig-A/MN MN &&
442 git update-index --add MN &&
442 - git read-tree -m $tree_O $tree_A $tree_B &&
443 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
444 check_result"
445
446 test_expect_success \
@@ -448,7 +449,7 @@ test_expect_success \
449 cp .orig-A/MN MN &&
450 git update-index --add MN &&
451 echo extra >>MN &&
451 - git read-tree -m $tree_O $tree_A $tree_B &&
452 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
453 check_result"
454
455 test_expect_success \
@@ -456,7 +457,7 @@ test_expect_success \
457 "rm -f .git/index NM &&
458 cp .orig-A/NM NM &&
459 git update-index --add NM &&
459 - git read-tree -m $tree_O $tree_A $tree_B &&
460 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
461 check_result"
462
463 test_expect_success \
@@ -465,7 +466,7 @@ test_expect_success \
466 cp .orig-B/NM NM &&
467 git update-index --add NM &&
468 echo extra >>NM &&
468 - git read-tree -m $tree_O $tree_A $tree_B &&
469 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
470 check_result"
471
472 test_expect_success \
@@ -474,7 +475,7 @@ test_expect_success \
475 cp .orig-A/NM NM &&
476 git update-index --add NM &&
477 echo extra >>NM &&
477 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
478 + read_tree_must_fail -m $tree_O $tree_A $tree_B
479 "
480
481 test_expect_success \
@@ -483,7 +484,7 @@ test_expect_success \
484 cp .orig-A/NM NM &&
485 echo extra >>NM &&
486 git update-index --add NM &&
486 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
487 + read_tree_must_fail -m $tree_O $tree_A $tree_B
488 "
489
490 test_expect_success \
@@ -491,7 +492,7 @@ test_expect_success \
492 "rm -f .git/index NN &&
493 cp .orig-A/NN NN &&
494 git update-index --add NN &&
494 - git read-tree -m $tree_O $tree_A $tree_B &&
495 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
496 check_result"
497
498 test_expect_success \
@@ -500,7 +501,7 @@ test_expect_success \
501 cp .orig-A/NN NN &&
502 git update-index --add NN &&
503 echo extra >>NN &&
503 - git read-tree -m $tree_O $tree_A $tree_B &&
504 + read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
505 check_result"
506
507 test_expect_success \
@@ -509,7 +510,7 @@ test_expect_success \
510 cp .orig-A/NN NN &&
511 echo extra >>NN &&
512 git update-index --add NN &&
512 - test_must_fail git read-tree -m $tree_O $tree_A $tree_B
513 + read_tree_must_fail -m $tree_O $tree_A $tree_B
514 "
515
516 # #16
@@ -522,7 +523,7 @@ test_expect_success \
523 echo E16 >F16 &&
524 git update-index F16 &&
525 tree1=`git write-tree` &&
525 - git read-tree -m $tree0 $tree1 $tree1 $tree0 &&
526 + read_tree_must_succeed -m $tree0 $tree1 $tree1 $tree0 &&
527 git ls-files --stage'
528
529 test_done
t/t1001-read-tree-m-2way.sh
+23 -22
@@ -21,6 +21,7 @@ In the test, these paths are used:
21 yomin - not in H nor M
22 '
23 . ./test-lib.sh
24 +. "$TEST_DIRECTORY"/lib-read-tree.sh
25
26 read_tree_twoway () {
27 git read-tree -m "$1" "$2" && git ls-files --stage
@@ -94,7 +95,7 @@ echo '+100644 X 0 yomin' >expected
95 test_expect_success \
96 '4 - carry forward local addition.' \
97 'rm -f .git/index &&
97 - git read-tree $treeH &&
98 + read_tree_must_succeed $treeH &&
99 git checkout-index -u -f -q -a &&
100 git update-index --add yomin &&
101 read_tree_twoway $treeH $treeM &&
@@ -106,7 +107,7 @@ test_expect_success \
107 test_expect_success \
108 '5 - carry forward local addition.' \
109 'rm -f .git/index &&
109 - git read-tree $treeH &&
110 + read_tree_must_succeed $treeH &&
111 git checkout-index -u -f -q -a &&
112 echo yomin >yomin &&
113 git update-index --add yomin &&
@@ -120,7 +121,7 @@ test_expect_success \
121 test_expect_success \
122 '6 - local addition already has the same.' \
123 'rm -f .git/index &&
123 - git read-tree $treeH &&
124 + read_tree_must_succeed $treeH &&
125 git checkout-index -u -f -q -a &&
126 git update-index --add frotz &&
127 read_tree_twoway $treeH $treeM &&
@@ -131,7 +132,7 @@ test_expect_success \
132 test_expect_success \
133 '7 - local addition already has the same.' \
134 'rm -f .git/index &&
134 - git read-tree $treeH &&
135 + read_tree_must_succeed $treeH &&
136 git checkout-index -u -f -q -a &&
137 echo frotz >frotz &&
138 git update-index --add frotz &&
@@ -144,7 +145,7 @@ test_expect_success \
145 test_expect_success \
146 '8 - conflicting addition.' \
147 'rm -f .git/index &&
147 - git read-tree $treeH &&
148 + read_tree_must_succeed $treeH &&
149 git checkout-index -u -f -q -a &&
150 echo frotz frotz >frotz &&
151 git update-index --add frotz &&
@@ -153,7 +154,7 @@ test_expect_success \
154 test_expect_success \
155 '9 - conflicting addition.' \
156 'rm -f .git/index &&
156 - git read-tree $treeH &&
157 + read_tree_must_succeed $treeH &&
158 git checkout-index -u -f -q -a &&
159 echo frotz frotz >frotz &&
160 git update-index --add frotz &&
@@ -163,7 +164,7 @@ test_expect_success \
164 test_expect_success \
165 '10 - path removed.' \
166 'rm -f .git/index &&
166 - git read-tree $treeH &&
167 + read_tree_must_succeed $treeH &&
168 git checkout-index -u -f -q -a &&
169 echo rezrov >rezrov &&
170 git update-index --add rezrov &&
@@ -174,7 +175,7 @@ test_expect_success \
175 test_expect_success \
176 '11 - dirty path removed.' \
177 'rm -f .git/index &&
177 - git read-tree $treeH &&
178 + read_tree_must_succeed $treeH &&
179 git checkout-index -u -f -q -a &&
180 echo rezrov >rezrov &&
181 git update-index --add rezrov &&
@@ -184,7 +185,7 @@ test_expect_success \
185 test_expect_success \
186 '12 - unmatching local changes being removed.' \
187 'rm -f .git/index &&
187 - git read-tree $treeH &&
188 + read_tree_must_succeed $treeH &&
189 git checkout-index -u -f -q -a &&
190 echo rezrov rezrov >rezrov &&
191 git update-index --add rezrov &&
@@ -193,7 +194,7 @@ test_expect_success \
194 test_expect_success \
195 '13 - unmatching local changes being removed.' \
196 'rm -f .git/index &&
196 - git read-tree $treeH &&
197 + read_tree_must_succeed $treeH &&
198 git checkout-index -u -f -q -a &&
199 echo rezrov rezrov >rezrov &&
200 git update-index --add rezrov &&
@@ -208,7 +209,7 @@ EOF
209 test_expect_success \
210 '14 - unchanged in two heads.' \
211 'rm -f .git/index &&
211 - git read-tree $treeH &&
212 + read_tree_must_succeed $treeH &&
213 git checkout-index -u -f -q -a &&
214 echo nitfol nitfol >nitfol &&
215 git update-index --add nitfol &&
@@ -221,7 +222,7 @@ test_expect_success \
222 test_expect_success \
223 '15 - unchanged in two heads.' \
224 'rm -f .git/index &&
224 - git read-tree $treeH &&
225 + read_tree_must_succeed $treeH &&
226 git checkout-index -u -f -q -a &&
227 echo nitfol nitfol >nitfol &&
228 git update-index --add nitfol &&
@@ -235,7 +236,7 @@ test_expect_success \
236 test_expect_success \
237 '16 - conflicting local change.' \
238 'rm -f .git/index &&
238 - git read-tree $treeH &&
239 + read_tree_must_succeed $treeH &&
240 git checkout-index -u -f -q -a &&
241 echo bozbar bozbar >bozbar &&
242 git update-index --add bozbar &&
@@ -244,7 +245,7 @@ test_expect_success \
245 test_expect_success \
246 '17 - conflicting local change.' \
247 'rm -f .git/index &&
247 - git read-tree $treeH &&
248 + read_tree_must_succeed $treeH &&
249 git checkout-index -u -f -q -a &&
250 echo bozbar bozbar >bozbar &&
251 git update-index --add bozbar &&
@@ -254,7 +255,7 @@ test_expect_success \
255 test_expect_success \
256 '18 - local change already having a good result.' \
257 'rm -f .git/index &&
257 - git read-tree $treeH &&
258 + read_tree_must_succeed $treeH &&
259 git checkout-index -u -f -q -a &&
260 cat bozbar-new >bozbar &&
261 git update-index --add bozbar &&
@@ -266,7 +267,7 @@ test_expect_success \
267 test_expect_success \
268 '19 - local change already having a good result, further modified.' \
269 'rm -f .git/index &&
269 - git read-tree $treeH &&
270 + read_tree_must_succeed $treeH &&
271 git checkout-index -u -f -q -a &&
272 cat bozbar-new >bozbar &&
273 git update-index --add bozbar &&
@@ -279,7 +280,7 @@ test_expect_success \
280 test_expect_success \
281 '20 - no local change, use new tree.' \
282 'rm -f .git/index &&
282 - git read-tree $treeH &&
283 + read_tree_must_succeed $treeH &&
284 git checkout-index -u -f -q -a &&
285 cat bozbar-old >bozbar &&
286 git update-index --add bozbar &&
@@ -291,7 +292,7 @@ test_expect_success \
292 test_expect_success \
293 '21 - no local change, dirty cache.' \
294 'rm -f .git/index &&
294 - git read-tree $treeH &&
295 + read_tree_must_succeed $treeH &&
296 git checkout-index -u -f -q -a &&
297 cat bozbar-old >bozbar &&
298 git update-index --add bozbar &&
@@ -302,7 +303,7 @@ test_expect_success \
303 test_expect_success \
304 '22 - local change cache updated.' \
305 'rm -f .git/index &&
305 - git read-tree $treeH &&
306 + read_tree_must_succeed $treeH &&
307 git checkout-index -u -f -q -a &&
308 sed -e "s/such as/SUCH AS/" bozbar-old >bozbar &&
309 git update-index --add bozbar &&
@@ -359,7 +360,7 @@ test_expect_success \
360
361 test_expect_success \
362 'a/b (untracked) vs a, plus c/d case test.' \
362 - 'test_must_fail git read-tree -u -m "$treeH" "$treeM" &&
363 + 'read_tree_u_must_fail -u -m "$treeH" "$treeM" &&
364 git ls-files --stage &&
365 test -f a/b'
366
@@ -386,7 +387,7 @@ test_expect_success \
387
388 test_expect_success \
389 'a/b vs a, plus c/d case test.' \
389 - 'git read-tree -u -m "$treeH" "$treeM" &&
390 + 'read_tree_u_must_succeed -u -m "$treeH" "$treeM" &&
391 git ls-files --stage | tee >treeMcheck.out &&
392 test_cmp treeM.out treeMcheck.out'
393
@@ -401,7 +402,7 @@ test_expect_success '-m references the correct modified tree' '
402 echo a >file-a &&
403 git add file-a &&
404 git ls-tree $(git write-tree) file-a >expect &&
404 - git read-tree -m HEAD initial-mod &&
405 + read_tree_must_succeed -m HEAD initial-mod &&
406 git ls-tree $(git write-tree) file-a >actual &&
407 test_cmp expect actual
408 '
t/t1002-read-tree-m-u-2way.sh
+41 -40
@@ -9,6 +9,7 @@ This is identical to t1001, but uses -u to update the work tree as well.
9
10 '
11 . ./test-lib.sh
12 +. "$TEST_DIRECTORY"/lib-read-tree.sh
13
14 compare_change () {
15 sed >current \
@@ -56,8 +57,8 @@ test_expect_success \
57 test_expect_success \
58 '1, 2, 3 - no carry forward' \
59 'rm -f .git/index nitfol bozbar rezrov frotz &&
59 - git read-tree --reset -u $treeH &&
60 - git read-tree -m -u $treeH $treeM &&
60 + read_tree_u_must_succeed --reset -u $treeH &&
61 + read_tree_u_must_succeed -m -u $treeH $treeM &&
62 git ls-files --stage >1-3.out &&
63 cmp M.out 1-3.out &&
64 sum bozbar frotz nitfol >actual3.sum &&
@@ -69,11 +70,11 @@ test_expect_success \
70 test_expect_success \
71 '4 - carry forward local addition.' \
72 'rm -f .git/index nitfol bozbar rezrov frotz &&
72 - git read-tree --reset -u $treeH &&
73 + read_tree_u_must_succeed --reset -u $treeH &&
74 echo "+100644 X 0 yomin" >expected &&
75 echo yomin >yomin &&
76 git update-index --add yomin &&
76 - git read-tree -m -u $treeH $treeM &&
77 + read_tree_u_must_succeed -m -u $treeH $treeM &&
78 git ls-files --stage >4.out || return 1
79 git diff -U0 --no-index M.out 4.out >4diff.out
80 compare_change 4diff.out expected &&
@@ -87,12 +88,12 @@ test_expect_success \
88 test_expect_success \
89 '5 - carry forward local addition.' \
90 'rm -f .git/index nitfol bozbar rezrov frotz &&
90 - git read-tree --reset -u $treeH &&
91 - git read-tree -m -u $treeH &&
91 + read_tree_u_must_succeed --reset -u $treeH &&
92 + read_tree_u_must_succeed -m -u $treeH &&
93 echo yomin >yomin &&
94 git update-index --add yomin &&
95 echo yomin yomin >yomin &&
95 - git read-tree -m -u $treeH $treeM &&
96 + read_tree_u_must_succeed -m -u $treeH $treeM &&
97 git ls-files --stage >5.out || return 1
98 git diff -U0 --no-index M.out 5.out >5diff.out
99 compare_change 5diff.out expected &&
@@ -107,10 +108,10 @@ test_expect_success \
108 test_expect_success \
109 '6 - local addition already has the same.' \
110 'rm -f .git/index nitfol bozbar rezrov frotz &&
110 - git read-tree --reset -u $treeH &&
111 + read_tree_u_must_succeed --reset -u $treeH &&
112 echo frotz >frotz &&
113 git update-index --add frotz &&
113 - git read-tree -m -u $treeH $treeM &&
114 + read_tree_u_must_succeed -m -u $treeH $treeM &&
115 git ls-files --stage >6.out &&
116 test_cmp M.out 6.out &&
117 check_cache_at frotz clean &&
@@ -123,11 +124,11 @@ test_expect_success \
124 test_expect_success \
125 '7 - local addition already has the same.' \
126 'rm -f .git/index nitfol bozbar rezrov frotz &&
126 - git read-tree --reset -u $treeH &&
127 + read_tree_u_must_succeed --reset -u $treeH &&
128 echo frotz >frotz &&
129 git update-index --add frotz &&
130 echo frotz frotz >frotz &&
130 - git read-tree -m -u $treeH $treeM &&
131 + read_tree_u_must_succeed -m -u $treeH $treeM &&
132 git ls-files --stage >7.out &&
133 test_cmp M.out 7.out &&
134 check_cache_at frotz dirty &&
@@ -141,27 +142,27 @@ test_expect_success \
142 test_expect_success \
143 '8 - conflicting addition.' \
144 'rm -f .git/index nitfol bozbar rezrov frotz &&
144 - git read-tree --reset -u $treeH &&
145 + read_tree_u_must_succeed --reset -u $treeH &&
146 echo frotz frotz >frotz &&
147 git update-index --add frotz &&
147 - if git read-tree -m -u $treeH $treeM; then false; else :; fi'
148 + if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
149
150 test_expect_success \
151 '9 - conflicting addition.' \
152 'rm -f .git/index nitfol bozbar rezrov frotz &&
152 - git read-tree --reset -u $treeH &&
153 + read_tree_u_must_succeed --reset -u $treeH &&
154 echo frotz frotz >frotz &&
155 git update-index --add frotz &&
156 echo frotz >frotz &&
156 - if git read-tree -m -u $treeH $treeM; then false; else :; fi'
157 + if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
158
159 test_expect_success \
160 '10 - path removed.' \
161 'rm -f .git/index nitfol bozbar rezrov frotz &&
161 - git read-tree --reset -u $treeH &&
162 + read_tree_u_must_succeed --reset -u $treeH &&
163 echo rezrov >rezrov &&
164 git update-index --add rezrov &&
164 - git read-tree -m -u $treeH $treeM &&
165 + read_tree_u_must_succeed -m -u $treeH $treeM &&
166 git ls-files --stage >10.out &&
167 cmp M.out 10.out &&
168 sum bozbar frotz nitfol >actual10.sum &&
@@ -170,28 +171,28 @@ test_expect_success \
171 test_expect_success \
172 '11 - dirty path removed.' \
173 'rm -f .git/index nitfol bozbar rezrov frotz &&
173 - git read-tree --reset -u $treeH &&
174 + read_tree_u_must_succeed --reset -u $treeH &&
175 echo rezrov >rezrov &&
176 git update-index --add rezrov &&
177 echo rezrov rezrov >rezrov &&
177 - if git read-tree -m -u $treeH $treeM; then false; else :; fi'
178 + if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
179
180 test_expect_success \
181 '12 - unmatching local changes being removed.' \
182 'rm -f .git/index nitfol bozbar rezrov frotz &&
182 - git read-tree --reset -u $treeH &&
183 + read_tree_u_must_succeed --reset -u $treeH &&
184 echo rezrov rezrov >rezrov &&
185 git update-index --add rezrov &&
185 - if git read-tree -m -u $treeH $treeM; then false; else :; fi'
186 + if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
187
188 test_expect_success \
189 '13 - unmatching local changes being removed.' \
190 'rm -f .git/index nitfol bozbar rezrov frotz &&
190 - git read-tree --reset -u $treeH &&
191 + read_tree_u_must_succeed --reset -u $treeH &&
192 echo rezrov rezrov >rezrov &&
193 git update-index --add rezrov &&
194 echo rezrov >rezrov &&
194 - if git read-tree -m -u $treeH $treeM; then false; else :; fi'
195 + if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
196
197 cat >expected <<EOF
198 -100644 X 0 nitfol
@@ -201,10 +202,10 @@ EOF
202 test_expect_success \
203 '14 - unchanged in two heads.' \
204 'rm -f .git/index nitfol bozbar rezrov frotz &&
204 - git read-tree --reset -u $treeH &&
205 + read_tree_u_must_succeed --reset -u $treeH &&
206 echo nitfol nitfol >nitfol &&
207 git update-index --add nitfol &&
207 - git read-tree -m -u $treeH $treeM &&
208 + read_tree_u_must_succeed -m -u $treeH $treeM &&
209 git ls-files --stage >14.out &&
210 test_must_fail git diff -U0 --no-index M.out 14.out >14diff.out &&
211 compare_change 14diff.out expected &&
@@ -221,11 +222,11 @@ test_expect_success \
222 test_expect_success \
223 '15 - unchanged in two heads.' \
224 'rm -f .git/index nitfol bozbar rezrov frotz &&
224 - git read-tree --reset -u $treeH &&
225 + read_tree_u_must_succeed --reset -u $treeH &&
226 echo nitfol nitfol >nitfol &&
227 git update-index --add nitfol &&
228 echo nitfol nitfol nitfol >nitfol &&
228 - git read-tree -m -u $treeH $treeM &&
229 + read_tree_u_must_succeed -m -u $treeH $treeM &&
230 git ls-files --stage >15.out &&
231 test_must_fail git diff -U0 --no-index M.out 15.out >15diff.out &&
232 compare_change 15diff.out expected &&
@@ -242,27 +243,27 @@ test_expect_success \
243 test_expect_success \
244 '16 - conflicting local change.' \
245 'rm -f .git/index nitfol bozbar rezrov frotz &&
245 - git read-tree --reset -u $treeH &&
246 + read_tree_u_must_succeed --reset -u $treeH &&
247 echo bozbar bozbar >bozbar &&
248 git update-index --add bozbar &&
248 - if git read-tree -m -u $treeH $treeM; then false; else :; fi'
249 + if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
250
251 test_expect_success \
252 '17 - conflicting local change.' \
253 'rm -f .git/index nitfol bozbar rezrov frotz &&
253 - git read-tree --reset -u $treeH &&
254 + read_tree_u_must_succeed --reset -u $treeH &&
255 echo bozbar bozbar >bozbar &&
256 git update-index --add bozbar &&
257 echo bozbar bozbar bozbar >bozbar &&
257 - if git read-tree -m -u $treeH $treeM; then false; else :; fi'
258 + if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
259
260 test_expect_success \
261 '18 - local change already having a good result.' \
262 'rm -f .git/index nitfol bozbar rezrov frotz &&
262 - git read-tree --reset -u $treeH &&
263 + read_tree_u_must_succeed --reset -u $treeH &&
264 echo gnusto >bozbar &&
265 git update-index --add bozbar &&
265 - git read-tree -m -u $treeH $treeM &&
266 + read_tree_u_must_succeed -m -u $treeH $treeM &&
267 git ls-files --stage >18.out &&
268 test_cmp M.out 18.out &&
269 check_cache_at bozbar clean &&
@@ -272,11 +273,11 @@ test_expect_success \
273 test_expect_success \
274 '19 - local change already having a good result, further modified.' \
275 'rm -f .git/index nitfol bozbar rezrov frotz &&
275 - git read-tree --reset -u $treeH &&
276 + read_tree_u_must_succeed --reset -u $treeH &&
277 echo gnusto >bozbar &&
278 git update-index --add bozbar &&
279 echo gnusto gnusto >bozbar &&
279 - git read-tree -m -u $treeH $treeM &&
280 + read_tree_u_must_succeed -m -u $treeH $treeM &&
281 git ls-files --stage >19.out &&
282 test_cmp M.out 19.out &&
283 check_cache_at bozbar dirty &&
@@ -292,10 +293,10 @@ test_expect_success \
293 test_expect_success \
294 '20 - no local change, use new tree.' \
295 'rm -f .git/index nitfol bozbar rezrov frotz &&
295 - git read-tree --reset -u $treeH &&
296 + read_tree_u_must_succeed --reset -u $treeH &&
297 echo bozbar >bozbar &&
298 git update-index --add bozbar &&
298 - git read-tree -m -u $treeH $treeM &&
299 + read_tree_u_must_succeed -m -u $treeH $treeM &&
300 git ls-files --stage >20.out &&
301 test_cmp M.out 20.out &&
302 check_cache_at bozbar clean &&
@@ -305,11 +306,11 @@ test_expect_success \
306 test_expect_success \
307 '21 - no local change, dirty cache.' \
308 'rm -f .git/index nitfol bozbar rezrov frotz &&
308 - git read-tree --reset -u $treeH &&
309 + read_tree_u_must_succeed --reset -u $treeH &&
310 echo bozbar >bozbar &&
311 git update-index --add bozbar &&
312 echo gnusto gnusto >bozbar &&
312 - if git read-tree -m -u $treeH $treeM; then false; else :; fi'
313 + if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
314
315 # Also make sure we did not break DF vs DF/DF case.
316 test_expect_success \
@@ -336,7 +337,7 @@ test_expect_success \
337 rm -fr DF &&
338 echo DF >DF &&
339 git update-index --add DF &&
339 - git read-tree -m -u $treeDF $treeDFDF &&
340 + read_tree_u_must_succeed -m -u $treeDF $treeDFDF &&
341 git ls-files --stage >DFDFcheck.out &&
342 test_cmp DFDF.out DFDFcheck.out &&
343 check_cache_at DF/DF clean'
t/t1004-read-tree-m-u-wf.sh
+12 -11
@@ -3,6 +3,7 @@
3 test_description='read-tree -m -u checks working tree files'
4
5 . ./test-lib.sh
6 +. "$TEST_DIRECTORY"/lib-read-tree.sh
7
8 # two-tree test
9
@@ -29,7 +30,7 @@ test_expect_success 'two-way not clobbering' '
30
31 echo >file2 master creates untracked file2 &&
32 echo >subdir/file2 master creates untracked subdir/file2 &&
32 - if err=`git read-tree -m -u master side 2>&1`
33 + if err=`read_tree_u_must_succeed -m -u master side 2>&1`
34 then
35 echo should have complained
36 false
@@ -42,7 +43,7 @@ echo file2 >.gitignore
43
44 test_expect_success 'two-way with incorrect --exclude-per-directory (1)' '
45
45 - if err=`git read-tree -m --exclude-per-directory=.gitignore master side 2>&1`
46 + if err=`read_tree_u_must_succeed -m --exclude-per-directory=.gitignore master side 2>&1`
47 then
48 echo should have complained
49 false
@@ -53,7 +54,7 @@ test_expect_success 'two-way with incorrect --exclude-per-directory (1)' '
54
55 test_expect_success 'two-way with incorrect --exclude-per-directory (2)' '
56
56 - if err=`git read-tree -m -u --exclude-per-directory=foo --exclude-per-directory=.gitignore master side 2>&1`
57 + if err=`read_tree_u_must_succeed -m -u --exclude-per-directory=foo --exclude-per-directory=.gitignore master side 2>&1`
58 then
59 echo should have complained
60 false
@@ -64,7 +65,7 @@ test_expect_success 'two-way with incorrect --exclude-per-directory (2)' '
65
66 test_expect_success 'two-way clobbering a ignored file' '
67
67 - git read-tree -m -u --exclude-per-directory=.gitignore master side
68 + read_tree_u_must_succeed -m -u --exclude-per-directory=.gitignore master side
69 '
70
71 rm -f .gitignore
@@ -84,7 +85,7 @@ test_expect_success 'three-way not complaining on an untracked path in both' '
85 echo >file2 file two is untracked on the master side &&
86 echo >subdir/file2 file two is untracked on the master side &&
87
87 - git read-tree -m -u branch-point master side
88 + read_tree_u_must_succeed -m -u branch-point master side
89 '
90
91 test_expect_success 'three-way not clobbering a working tree file' '
@@ -94,7 +95,7 @@ test_expect_success 'three-way not clobbering a working tree file' '
95 git checkout master &&
96 echo >file3 file three created in master, untracked &&
97 echo >subdir/file3 file three created in master, untracked &&
97 - if err=`git read-tree -m -u branch-point master side 2>&1`
98 + if err=`read_tree_u_must_succeed -m -u branch-point master side 2>&1`
99 then
100 echo should have complained
101 false
@@ -113,7 +114,7 @@ test_expect_success 'three-way not complaining on an untracked file' '
114 echo >file3 file three created in master, untracked &&
115 echo >subdir/file3 file three created in master, untracked &&
116
116 - git read-tree -m -u --exclude-per-directory=.gitignore branch-point master side
117 + read_tree_u_must_succeed -m -u --exclude-per-directory=.gitignore branch-point master side
118 '
119
120 test_expect_success '3-way not overwriting local changes (setup)' '
@@ -137,7 +138,7 @@ test_expect_success '3-way not overwriting local changes (our side)' '
138 git reset --hard &&
139
140 echo >>file1 "local changes" &&
140 - git read-tree -m -u branch-point side-a side-b &&
141 + read_tree_u_must_succeed -m -u branch-point side-a side-b &&
142 grep "new line to be kept" file1 &&
143 grep "local changes" file1
144
@@ -151,7 +152,7 @@ test_expect_success '3-way not overwriting local changes (their side)' '
152 git reset --hard &&
153
154 echo >>file2 "local changes" &&
154 - test_must_fail git read-tree -m -u branch-point side-a side-b &&
155 + read_tree_u_must_fail -m -u branch-point side-a side-b &&
156 ! grep "new line to be kept" file2 &&
157 grep "local changes" file2
158
@@ -173,7 +174,7 @@ test_expect_success SYMLINKS 'funny symlink in work tree' '
174 git add a/b &&
175 git commit -m "we add a/b" &&
176
176 - git read-tree -m -u sym-a sym-a sym-b
177 + read_tree_u_must_succeed -m -u sym-a sym-a sym-b
178
179 '
180
@@ -209,7 +210,7 @@ test_expect_success 'D/F setup' '
210 test_expect_success 'D/F' '
211
212 git checkout side-b &&
212 - git read-tree -m -u branch-point side-b side-a &&
213 + read_tree_u_must_succeed -m -u branch-point side-b side-a &&
214 git ls-files -u >actual &&
215 (
216 a=$(git rev-parse branch-point:subdir/file2)
t/t1005-read-tree-reset.sh
+7 -6
@@ -3,6 +3,7 @@
3 test_description='read-tree -u --reset'
4
5 . ./test-lib.sh
6 +. "$TEST_DIRECTORY"/lib-read-tree.sh
7
8 # two-tree test
9
@@ -22,13 +23,13 @@ test_expect_success 'setup' '
23 '
24
25 test_expect_success 'reset should work' '
25 - git read-tree -u --reset HEAD^ &&
26 + read_tree_u_must_succeed -u --reset HEAD^ &&
27 git ls-files >actual &&
28 test_cmp expect actual
29 '
30
31 test_expect_success 'reset should remove remnants from a failed merge' '
31 - git read-tree --reset -u HEAD &&
32 + read_tree_u_must_succeed --reset -u HEAD &&
33 git ls-files -s >expect &&
34 sha1=$(git rev-parse :new) &&
35 (
@@ -37,13 +38,13 @@ test_expect_success 'reset should remove remnants from a failed merge' '
38 ) | git update-index --index-info &&
39 >old &&
40 git ls-files -s &&
40 - git read-tree --reset -u HEAD &&
41 + read_tree_u_must_succeed --reset -u HEAD &&
42 git ls-files -s >actual &&
43 ! test -f old
44 '
45
46 test_expect_success 'Porcelain reset should remove remnants too' '
46 - git read-tree --reset -u HEAD &&
47 + read_tree_u_must_succeed --reset -u HEAD &&
48 git ls-files -s >expect &&
49 sha1=$(git rev-parse :new) &&
50 (
@@ -58,7 +59,7 @@ test_expect_success 'Porcelain reset should remove remnants too' '
59 '
60
61 test_expect_success 'Porcelain checkout -f should remove remnants too' '
61 - git read-tree --reset -u HEAD &&
62 + read_tree_u_must_succeed --reset -u HEAD &&
63 git ls-files -s >expect &&
64 sha1=$(git rev-parse :new) &&
65 (
@@ -73,7 +74,7 @@ test_expect_success 'Porcelain checkout -f should remove remnants too' '
74 '
75
76 test_expect_success 'Porcelain checkout -f HEAD should remove remnants too' '
76 - git read-tree --reset -u HEAD &&
77 + read_tree_u_must_succeed --reset -u HEAD &&
78 git ls-files -s >expect &&
79 sha1=$(git rev-parse :new) &&
80 (
t/t1008-read-tree-overlay.sh
+2 -1
@@ -3,6 +3,7 @@
3 test_description='test multi-tree read-tree without merging'
4
5 . ./test-lib.sh
6 +. "$TEST_DIRECTORY"/lib-read-tree.sh
7
8 test_expect_success setup '
9 echo one >a &&
@@ -21,7 +22,7 @@ test_expect_success setup '
22 '
23
24 test_expect_success 'multi-read' '
24 - git read-tree initial master side &&
25 + read_tree_must_succeed initial master side &&
26 (echo a; echo b/c) >expect &&
27 git ls-files >actual &&
28 test_cmp expect actual
t/t1011-read-tree-sparse-checkout.sh
+14 -13
@@ -12,6 +12,7 @@ test_description='sparse checkout tests
12 '
13
14 . ./test-lib.sh
15 +. "$TEST_DIRECTORY"/lib-read-tree.sh
16
17 test_expect_success 'setup' '
18 cat >expected <<-\EOF &&
@@ -43,7 +44,7 @@ test_expect_success 'setup' '
44 '
45
46 test_expect_success 'read-tree without .git/info/sparse-checkout' '
46 - git read-tree -m -u HEAD &&
47 + read_tree_u_must_succeed -m -u HEAD &&
48 git ls-files --stage >result &&
49 test_cmp expected result &&
50 git ls-files -t >result &&
@@ -52,7 +53,7 @@ test_expect_success 'read-tree without .git/info/sparse-checkout' '
53
54 test_expect_success 'read-tree with .git/info/sparse-checkout but disabled' '
55 echo >.git/info/sparse-checkout &&
55 - git read-tree -m -u HEAD &&
56 + read_tree_u_must_succeed -m -u HEAD &&
57 git ls-files -t >result &&
58 test_cmp expected.swt result &&
59 test -f init.t &&
@@ -62,7 +63,7 @@ test_expect_success 'read-tree with .git/info/sparse-checkout but disabled' '
63 test_expect_success 'read-tree --no-sparse-checkout with empty .git/info/sparse-checkout and enabled' '
64 git config core.sparsecheckout true &&
65 echo >.git/info/sparse-checkout &&
65 - git read-tree --no-sparse-checkout -m -u HEAD &&
66 + read_tree_u_must_succeed --no-sparse-checkout -m -u HEAD &&
67 git ls-files -t >result &&
68 test_cmp expected.swt result &&
69 test -f init.t &&
@@ -72,7 +73,7 @@ test_expect_success 'read-tree --no-sparse-checkout with empty .git/info/sparse-
73 test_expect_success 'read-tree with empty .git/info/sparse-checkout' '
74 git config core.sparsecheckout true &&
75 echo >.git/info/sparse-checkout &&
75 - test_must_fail git read-tree -m -u HEAD &&
76 + read_tree_u_must_fail -m -u HEAD &&
77 git ls-files --stage >result &&
78 test_cmp expected result &&
79 git ls-files -t >result &&
@@ -90,7 +91,7 @@ test_expect_success 'match directories with trailing slash' '
91 EOF
92
93 echo sub/ > .git/info/sparse-checkout &&
93 - git read-tree -m -u HEAD &&
94 + read_tree_u_must_succeed -m -u HEAD &&
95 git ls-files -t > result &&
96 test_cmp expected.swt-noinit result &&
97 test ! -f init.t &&
@@ -99,7 +100,7 @@ test_expect_success 'match directories with trailing slash' '
100
101 test_expect_success 'match directories without trailing slash' '
102 echo sub >.git/info/sparse-checkout &&
102 - git read-tree -m -u HEAD &&
103 + read_tree_u_must_succeed -m -u HEAD &&
104 git ls-files -t >result &&
105 test_cmp expected.swt-noinit result &&
106 test ! -f init.t &&
@@ -149,7 +150,7 @@ EOF
150
151 test_expect_success 'match directory pattern' '
152 echo "s?b" >.git/info/sparse-checkout &&
152 - git read-tree -m -u HEAD &&
153 + read_tree_u_must_succeed -m -u HEAD &&
154 git ls-files -t >result &&
155 test_cmp expected.swt-noinit result &&
156 test ! -f init.t &&
@@ -165,7 +166,7 @@ test_expect_success 'checkout area changes' '
166 EOF
167
168 echo init.t >.git/info/sparse-checkout &&
168 - git read-tree -m -u HEAD &&
169 + read_tree_u_must_succeed -m -u HEAD &&
170 git ls-files -t >result &&
171 test_cmp expected.swt-nosub result &&
172 test -f init.t &&
@@ -175,7 +176,7 @@ test_expect_success 'checkout area changes' '
176 test_expect_success 'read-tree updates worktree, absent case' '
177 echo sub/added >.git/info/sparse-checkout &&
178 git checkout -f top &&
178 - git read-tree -m -u HEAD^ &&
179 + read_tree_u_must_succeed -m -u HEAD^ &&
180 test ! -f init.t
181 '
182
@@ -183,7 +184,7 @@ test_expect_success 'read-tree updates worktree, dirty case' '
184 echo sub/added >.git/info/sparse-checkout &&
185 git checkout -f top &&
186 echo dirty >init.t &&
186 - git read-tree -m -u HEAD^ &&
187 + read_tree_u_must_succeed -m -u HEAD^ &&
188 grep -q dirty init.t &&
189 rm init.t
190 '
@@ -192,14 +193,14 @@ test_expect_success 'read-tree removes worktree, dirty case' '
193 echo init.t >.git/info/sparse-checkout &&
194 git checkout -f top &&
195 echo dirty >added &&
195 - git read-tree -m -u HEAD^ &&
196 + read_tree_u_must_succeed -m -u HEAD^ &&
197 grep -q dirty added
198 '
199
200 test_expect_success 'read-tree adds to worktree, absent case' '
201 echo init.t >.git/info/sparse-checkout &&
202 git checkout -f removed &&
202 - git read-tree -u -m HEAD^ &&
203 + read_tree_u_must_succeed -u -m HEAD^ &&
204 test ! -f sub/added
205 '
206
@@ -208,7 +209,7 @@ test_expect_success 'read-tree adds to worktree, dirty case' '
209 git checkout -f removed &&
210 mkdir sub &&
211 echo dirty >sub/added &&
211 - git read-tree -u -m HEAD^ &&
212 + read_tree_u_must_succeed -u -m HEAD^ &&
213 grep -q dirty sub/added
214 '
215
t/t1012-read-tree-df.sh
+5 -4
@@ -3,6 +3,7 @@
3 test_description='read-tree D/F conflict corner cases'
4
5 . ./test-lib.sh
6 +. "$TEST_DIRECTORY"/lib-read-tree.sh
7
8 maketree () {
9 (
@@ -53,7 +54,7 @@ test_expect_success setup '
54
55 test_expect_success '3-way (1)' '
56 settree A-000 &&
56 - git read-tree -m -u O-000 A-000 B-000 &&
57 + read_tree_u_must_succeed -m -u O-000 A-000 B-000 &&
58 checkindex <<-EOF
59 3 a/b
60 0 a/b-2/c/d
@@ -65,7 +66,7 @@ test_expect_success '3-way (1)' '
66
67 test_expect_success '3-way (2)' '
68 settree A-001 &&
68 - git read-tree -m -u O-000 A-001 B-000 &&
69 + read_tree_u_must_succeed -m -u O-000 A-001 B-000 &&
70 checkindex <<-EOF
71 3 a/b
72 0 a/b-2/c/d
@@ -78,7 +79,7 @@ test_expect_success '3-way (2)' '
79
80 test_expect_success '3-way (3)' '
81 settree A-010 &&
81 - git read-tree -m -u O-010 A-010 B-010 &&
82 + read_tree_u_must_succeed -m -u O-010 A-010 B-010 &&
83 checkindex <<-EOF
84 2 t
85 1 t-0
@@ -92,7 +93,7 @@ test_expect_success '3-way (3)' '
93
94 test_expect_success '2-way (1)' '
95 settree O-020 &&
95 - git read-tree -m -u O-020 A-020 &&
96 + read_tree_u_must_succeed -m -u O-020 A-020 &&
97 checkindex <<-EOF
98 0 ds/dma/ioat/Makefile
99 0 ds/dma/ioat/registers.h
t/t1020-subdirectory.sh
+3 -2
@@ -7,6 +7,7 @@ test_description='Try various core-level commands in subdirectory.
7 '
8
9 . ./test-lib.sh
10 +. "$TEST_DIRECTORY"/lib-read-tree.sh
11
12 test_expect_success setup '
13 long="a b c d e f g h i j k l m n o p q r s t u v w x y z" &&
@@ -98,13 +99,13 @@ test_expect_success 'checkout-index' '
99 test_expect_success 'read-tree' '
100 rm -f one dir/two &&
101 tree=`git write-tree` &&
101 - git read-tree --reset -u "$tree" &&
102 + read_tree_u_must_succeed --reset -u "$tree" &&
103 cmp one original.one &&
104 cmp dir/two original.two &&
105 (
106 cd dir &&
107 rm -f two &&
107 - git read-tree --reset -u "$tree" &&
108 + read_tree_u_must_succeed --reset -u "$tree" &&
109 cmp two ../original.two &&
110 cmp ../one ../original.one
111 )