Modernize some testcases for merge-recursive corner cases
cover Modernize some testcases for merge-recursive corner cases
I have about a dozen more testcases I want to add to the testsuite, in order to document additional situations that merge-recursive handles suboptimally. To avoid sending an excessively long series, I am splitting this up. This series just aims to modernize a pair of testfiles in which several of the new tests would most naturally belong. This modernization serves two purposes: (1) it makes the existing tests easier to understand, and (2) it simplifies adding more tests to these test files.
Elijah Newren (5):
t6036, t6042: use test_create_repo to keep tests independent t6036, t6042: use test_line_count instead of wc -l
t6036, t6042: prefer test_path_is_file, test_path_is_missing t6036, t6042: prefer test_cmp to sequences of test
t6036: prefer test_when_finished to manual cleanup in following test
t/t6036-recursive-corner-cases.sh | 991 +++++++++++++++------------ t/t6042-merge-rename-corner-cases.sh | 968 ++++++++++++++------------ 2 files changed, 1098 insertions(+), 861 deletions(-)
Signature · 1 line
2.17.0.1.gda85003413
PATCH 1/5 t6036, t6042: use test_create_repo to keep tests independent
These tests used pretty strong measures to get a clean slate:
git rm -rf . &&
git clean -fdqx &&
rm -rf .git &&
git init &&It's easier, safer (what if a previous test has a bug and accidentally changes into a directory outside the test path?), and allows re-inspecting test setup later if we instead just use test_create_repo to put different tests into separate sub-repositories.
---
Best viewed with git diff -w...
t/t6036-recursive-corner-cases.sh | 854 ++++++++++++++------------ t/t6042-merge-rename-corner-cases.sh | 887 ++++++++++++++------------- 2 files changed, 926 insertions(+), 815 deletions(-)
t/t6036-recursive-corner-cases.sh +452 -402
@@ -21,51 +21,60 @@ get_clean_checkout () { # test_expect_success 'setup basic criss-cross + rename with no modifications' ' - ten="0 1 2 3 4 5 6 7 8 9" && - for i in $ten - do - echo line $i in a sample file - done >one && - for i in $ten - do - echo line $i in another sample file - done >two && - git add one two && - test_tick && git commit -m initial && - - git branch L1 && - git checkout -b R1 && - git mv one three && - test_tick && git commit -m R1 && - - git checkout L1 && - git mv two three && - test_tick && git commit -m L1 && - - git checkout L1^0 && - test_tick && git merge -s ours R1 && - git tag L2 && - - git checkout R1^0 && - test_tick && git merge -s ours L1 && - git tag R2 + test_create_repo basic-rename && + ( + cd basic-rename && + + ten="0 1 2 3 4 5 6 7 8 9" && + for i in $ten + do + echo line $i in a sample file + done >one && + for i in $ten + do + echo line $i in another sample file + done >two && + git add one two && + test_tick && git commit -m initial && + + git branch L1 && + git checkout -b R1 && + git mv one three && + test_tick && git commit -m R1 && + + git checkout L1 && + git mv two three && + test_tick && git commit -m L1 && + + git checkout L1^0 && + test_tick && git merge -s ours R1 && + git tag L2 && + + git checkout R1^0 && + test_tick && git merge -s ours L1 && + git tag R2 + ) ' test_expect_success 'merge simple rename+criss-cross with no modifications' ' - git reset --hard && - git checkout L2^0 && + ( + cd basic-rename && + + git reset --hard && + git checkout L2^0 && - test_must_fail git merge -s recursive R2^0 && + test_must_fail git merge -s recursive R2^0 && - test 2 = $(git ls-files -s | wc -l) && - test 2 = $(git ls-files -u | wc -l) && - test 2 = $(git ls-files -o | wc -l) && + test 2 = $(git ls-files -s | wc -l) && + test 2 = $(git ls-files -u | wc -l) && + test 2 = $(git ls-files -o | wc -l) && - test $(git rev-parse :2:three) = $(git rev-parse L2:three) && - test $(git rev-parse :3:three) = $(git rev-parse R2:three) && + test $(git rev-parse :2:three) = $(git rev-parse L2:three) && + test $(git rev-parse :3:three) = $(git rev-parse R2:three) && - test $(git rev-parse L2:three) = $(git hash-object three~HEAD) && - test $(git rev-parse R2:three) = $(git hash-object three~R2^0) + test $(git rev-parse L2:three) = $(git hash-object three~HEAD) && + test $(git rev-parse R2:three) = $(git hash-object three~R2^0) + ) ' #
@@ -81,58 +90,61 @@ test_expect_success 'merge simple rename+criss-cross with no modifications' ' # test_expect_success 'setup criss-cross + rename merges with basic modification' ' - git rm -rf . && - git clean -fdqx && - rm -rf .git && - git init && - - ten="0 1 2 3 4 5 6 7 8 9" && - for i in $ten - do - echo line $i in a sample file - done >one && - for i in $ten - do - echo line $i in another sample file - done >two && - git add one two && - test_tick && git commit -m initial && - - git branch L1 && - git checkout -b R1 && - git mv one three && - echo more >>two && - git add two && - test_tick && git commit -m R1 && - - git checkout L1 && - git mv two three && - test_tick && git commit -m L1 && - - git checkout L1^0 && - test_tick && git merge -s ours R1 && - git tag L2 && - - git checkout R1^0 && - test_tick && git merge -s ours L1 && - git tag R2 + test_create_repo rename-modify && + ( + cd rename-modify && + + ten="0 1 2 3 4 5 6 7 8 9" && + for i in $ten + do + echo line $i in a sample file + done >one && + for i in $ten + do + echo line $i in another sample file + done >two && + git add one two && + test_tick && git commit -m initial && + + git branch L1 && + git checkout -b R1 && + git mv one three && + echo more >>two && + git add two && + test_tick && git commit -m R1 && + + git checkout L1 && + git mv two three && + test_tick && git commit -m L1 && + + git checkout L1^0 && + test_tick && git merge -s ours R1 && + git tag L2 && + + git checkout R1^0 && + test_tick && git merge -s ours L1 && + git tag R2 + ) ' test_expect_success 'merge criss-cross + rename merges with basic modification' ' - git reset --hard && - git checkout L2^0 && + ( + cd rename-modify && + + git checkout L2^0 && - test_must_fail git merge -s recursive R2^0 && + test_must_fail git merge -s recursive R2^0 && - test 2 = $(git ls-files -s | wc -l) && - test 2 = $(git ls-files -u | wc -l) && - test 2 = $(git ls-files -o | wc -l) && + test 2 = $(git ls-files -s | wc -l) && + test 2 = $(git ls-files -u | wc -l) && + test 2 = $(git ls-files -o | wc -l) && - test $(git rev-parse :2:three) = $(git rev-parse L2:three) && - test $(git rev-parse :3:three) = $(git rev-parse R2:three) && + test $(git rev-parse :2:three) = $(git rev-parse L2:three) && + test $(git rev-parse :3:three) = $(git rev-parse R2:three) && - test $(git rev-parse L2:three) = $(git hash-object three~HEAD) && - test $(git rev-parse R2:three) = $(git hash-object three~R2^0) + test $(git rev-parse L2:three) = $(git hash-object three~HEAD) && + test $(git rev-parse R2:three) = $(git hash-object three~R2^0) + ) ' #
@@ -156,64 +168,67 @@ test_expect_success 'merge criss-cross + rename merges with basic modification' # test_expect_success 'setup differently handled merges of rename/add conflict' ' - git rm -rf . && - git clean -fdqx && - rm -rf .git && - git init && - - printf "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n" >a && - git add a && - test_tick && git commit -m A && - - git branch B && - git checkout -b C && - echo 10 >>a && - echo "other content" >>new_a && - git add a new_a && - test_tick && git commit -m C && - - git checkout B && - git mv a new_a && - test_tick && git commit -m B && - - git checkout B^0 && - test_must_fail git merge C && - git clean -f && - test_tick && git commit -m D && - git tag D && - - git checkout C^0 && - test_must_fail git merge B && - rm new_a~HEAD new_a && - printf "Incorrectly merged content" >>new_a && - git add -u && - test_tick && git commit -m E && - git tag E + test_create_repo rename-add && + ( + cd rename-add && + + printf "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n" >a && + git add a && + test_tick && git commit -m A && + + git branch B && + git checkout -b C && + echo 10 >>a && + echo "other content" >>new_a && + git add a new_a && + test_tick && git commit -m C && + + git checkout B && + git mv a new_a && + test_tick && git commit -m B && + + git checkout B^0 && + test_must_fail git merge C && + git clean -f && + test_tick && git commit -m D && + git tag D && + + git checkout C^0 && + test_must_fail git merge B && + rm new_a~HEAD new_a && + printf "Incorrectly merged content" >>new_a && + git add -u && + test_tick && git commit -m E && + git tag E + ) ' test_expect_success 'git detects differently handled merges conflict' ' - git reset --hard && - git checkout D^0 && - - test_must_fail git merge -s recursive E^0 && - - test 3 = $(git ls-files -s | wc -l) && - test 3 = $(git ls-files -u | wc -l) && - test 0 = $(git ls-files -o | wc -l) && - - test $(git rev-parse :2:new_a) = $(git rev-parse D:new_a) && - test $(git rev-parse :3:new_a) = $(git rev-parse E:new_a) && - - git cat-file -p B:new_a >>merged && - git cat-file -p C:new_a >>merge-me && - >empty && - test_must_fail git merge-file \ - -L "Temporary merge branch 2" \ - -L "" \ - -L "Temporary merge branch 1" \ - merged empty merge-me && - sed -e "s/^\([<=>]\)/\1\1\1/" merged >merged-internal && - test $(git rev-parse :1:new_a) = $(git hash-object merged-internal) + ( + cd rename-add && + + git checkout D^0 && + + test_must_fail git merge -s recursive E^0 && + + test 3 = $(git ls-files -s | wc -l) && + test 3 = $(git ls-files -u | wc -l) && + test 0 = $(git ls-files -o | wc -l) && + + test $(git rev-parse :2:new_a) = $(git rev-parse D:new_a) && + test $(git rev-parse :3:new_a) = $(git rev-parse E:new_a) && + + git cat-file -p B:new_a >>merged && + git cat-file -p C:new_a >>merge-me && + >empty && + test_must_fail git merge-file \ + -L "Temporary merge branch 2" \ + -L "" \ + -L "Temporary merge branch 1" \ + merged empty merge-me && + sed -e "s/^\([<=>]\)/\1\1\1/" merged >merged-internal && + test $(git rev-parse :1:new_a) = $(git hash-object merged-internal) + ) ' #
@@ -236,67 +251,75 @@ test_expect_success 'git detects differently handled merges conflict' ' # Merging commits D & E should result in modify/delete conflict. test_expect_success 'setup criss-cross + modify/delete resolved differently' ' - git rm -rf . && - git clean -fdqx && - rm -rf .git && - git init && - - echo A >file && - git add file && - test_tick && - git commit -m A && - - git branch B && - git checkout -b C && - git rm file && - test_tick && - git commit -m C && - - git checkout B && - echo B >file && - git add file && - test_tick && - git commit -m B && - - git checkout B^0 && - test_must_fail git merge C && - echo B >file && - git add file && - test_tick && - git commit -m D && - git tag D && - - git checkout C^0 && - test_must_fail git merge B && - git rm file && - test_tick && - git commit -m E && - git tag E + test_create_repo modify-delete && + ( + cd modify-delete && + + echo A >file && + git add file && + test_tick && + git commit -m A && + + git branch B && + git checkout -b C && + git rm file && + test_tick && + git commit -m C && + + git checkout B && + echo B >file && + git add file && + test_tick && + git commit -m B && + + git checkout B^0 && + test_must_fail git merge C && + echo B >file && + git add file && + test_tick && + git commit -m D && + git tag D && + + git checkout C^0 && + test_must_fail git merge B && + git rm file && + test_tick && + git commit -m E && + git tag E + ) ' test_expect_success 'git detects conflict merging criss-cross+modify/delete' ' - git checkout D^0 && + ( + cd modify-delete && + + git checkout D^0 && - test_must_fail git merge -s recursive E^0 && + test_must_fail git merge -s recursive E^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u | wc -l) && + test 2 -eq $(git ls-files -s | wc -l) && + test 2 -eq $(git ls-files -u | wc -l) && - test $(git rev-parse :1:file) = $(git rev-parse master:file) && - test $(git rev-parse :2:file) = $(git rev-parse B:file) + test $(git rev-parse :1:file) = $(git rev-parse master:file) && + test $(git rev-parse :2:file) = $(git rev-parse B:file) + ) ' test_expect_success 'git detects conflict merging criss-cross+modify/delete, reverse direction' ' - git reset --hard && - git checkout E^0 && + ( + cd modify-delete && + + git reset --hard && + git checkout E^0 && - test_must_fail git merge -s recursive D^0 && + test_must_fail git merge -s recursive D^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u | wc -l) && + test 2 -eq $(git ls-files -s | wc -l) && + test 2 -eq $(git ls-files -u | wc -l) && - test $(git rev-parse :1:file) = $(git rev-parse master:file) && - test $(git rev-parse :3:file) = $(git rev-parse B:file) + test $(git rev-parse :1:file) = $(git rev-parse master:file) && + test $(git rev-parse :3:file) = $(git rev-parse B:file) + ) ' #
@@ -336,120 +359,136 @@ test_expect_success 'git detects conflict merging criss-cross+modify/delete, rev # test_expect_success 'setup differently handled merges of directory/file conflict' ' - git rm -rf . && - git clean -fdqx && - rm -rf .git && - git init && - - >ignore-me && - git add ignore-me && - test_tick && - git commit -m A && - git tag A && - - git branch B && - git checkout -b C && - mkdir a && - echo 10 >a/file && - git add a/file && - test_tick && - git commit -m C && - - git checkout B && - echo 5 >a && - git add a && - test_tick && - git commit -m B && - - git checkout B^0 && - test_must_fail git merge C && - git clean -f && - rm -rf a/ && - echo 5 >a && - git add a && - test_tick && - git commit -m D && - git tag D && - - git checkout C^0 && - test_must_fail git merge B && - git clean -f && - git rm --cached a && - echo 10 >a/file && - git add a/file && - test_tick && - git commit -m E1 && - git tag E1 && - - git checkout C^0 && - test_must_fail git merge B && - git clean -f && - git rm --cached a && - printf "10\n11\n" >a/file && - git add a/file && - test_tick && - git commit -m E2 && - git tag E2 + test_create_repo directory-file && + ( + cd directory-file && + + >ignore-me && + git add ignore-me && + test_tick && + git commit -m A && + git tag A && + + git branch B && + git checkout -b C && + mkdir a && + echo 10 >a/file && + git add a/file && + test_tick && + git commit -m C && + + git checkout B && + echo 5 >a && + git add a && + test_tick && + git commit -m B && + + git checkout B^0 && + test_must_fail git merge C && + git clean -f && + rm -rf a/ && + echo 5 >a && + git add a && + test_tick && + git commit -m D && + git tag D && + + git checkout C^0 && + test_must_fail git merge B && + git clean -f && + git rm --cached a && + echo 10 >a/file && + git add a/file && + test_tick && + git commit -m E1 && + git tag E1 && + + git checkout C^0 && + test_must_fail git merge B && + git clean -f && + git rm --cached a && + printf "10\n11\n" >a/file && + git add a/file && + test_tick && + git commit -m E2 && + git tag E2 + ) ' test_expect_success 'merge of D & E1 fails but has appropriate contents' ' - get_clean_checkout D^0 && + ( + cd directory-file && - test_must_fail git merge -s recursive E1^0 && + get_clean_checkout D^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 1 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + test_must_fail git merge -s recursive E1^0 && - test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && - test $(git rev-parse :2:a) = $(git rev-parse B:a) + test 2 -eq $(git ls-files -s | wc -l) && + test 1 -eq $(git ls-files -u | wc -l) && + test 0 -eq $(git ls-files -o | wc -l) && + + test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && + test $(git rev-parse :2:a) = $(git rev-parse B:a) + ) ' test_expect_success 'merge of E1 & D fails but has appropriate contents' ' - get_clean_checkout E1^0 && + ( + cd directory-file && + + get_clean_checkout E1^0 && - test_must_fail git merge -s recursive D^0 && + test_must_fail git merge -s recursive D^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 1 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + test 2 -eq $(git ls-files -s | wc -l) && + test 1 -eq $(git ls-files -u | wc -l) && + test 0 -eq $(git ls-files -o | wc -l) && - test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && - test $(git rev-parse :3:a) = $(git rev-parse B:a) + test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && + test $(git rev-parse :3:a) = $(git rev-parse B:a) + ) ' test_expect_success 'merge of D & E2 fails but has appropriate contents' ' - get_clean_checkout D^0 && + ( + cd directory-file && + + get_clean_checkout D^0 && - test_must_fail git merge -s recursive E2^0 && + test_must_fail git merge -s recursive E2^0 && - test 4 -eq $(git ls-files -s | wc -l) && - test 3 -eq $(git ls-files -u | wc -l) && - test 1 -eq $(git ls-files -o | wc -l) && + test 4 -eq $(git ls-files -s | wc -l) && + test 3 -eq $(git ls-files -u | wc -l) && + test 1 -eq $(git ls-files -o | wc -l) && - test $(git rev-parse :2:a) = $(git rev-parse B:a) && - test $(git rev-parse :3:a/file) = $(git rev-parse E2:a/file) && - test $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) && - test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && + test $(git rev-parse :2:a) = $(git rev-parse B:a) && + test $(git rev-parse :3:a/file) = $(git rev-parse E2:a/file) && + test $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) && + test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && - test -f a~HEAD + test -f a~HEAD + ) ' test_expect_success 'merge of E2 & D fails but has appropriate contents' ' - get_clean_checkout E2^0 && + ( + cd directory-file && - test_must_fail git merge -s recursive D^0 && + get_clean_checkout E2^0 && - test 4 -eq $(git ls-files -s | wc -l) && - test 3 -eq $(git ls-files -u | wc -l) && - test 1 -eq $(git ls-files -o | wc -l) && + test_must_fail git merge -s recursive D^0 && - test $(git rev-parse :3:a) = $(git rev-parse B:a) && - test $(git rev-parse :2:a/file) = $(git rev-parse E2:a/file) && - test $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) && - test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && + test 4 -eq $(git ls-files -s | wc -l) && + test 3 -eq $(git ls-files -u | wc -l) && + test 1 -eq $(git ls-files -o | wc -l) && - test -f a~D^0 + test $(git rev-parse :3:a) = $(git rev-parse B:a) && + test $(git rev-parse :2:a/file) = $(git rev-parse E2:a/file) && + test $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) && + test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && + + test -f a~D^0 + ) ' #
@@ -492,52 +531,55 @@ test_expect_success 'merge of E2 & D fails but has appropriate contents' ' # but that may cancel out at the final merge stage". test_expect_success 'setup rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify' ' - git reset --hard && - git rm -rf . && - git clean -fdqx && - rm -rf .git && - git init && - - printf "1\n2\n3\n4\n5\n6\n" >a && - git add a && - git commit -m A && - git tag A && - - git checkout -b B A && - git mv a b && - echo 7 >>b && - git add -u && - git commit -m B && - - git checkout -b C A && - git mv a c && - git commit -m C && - - git checkout -q B^0 && - git merge --no-commit -s ours C^0 && - git mv b newname && - git commit -m "Merge commit C^0 into HEAD" && - git tag D && - - git checkout -q C^0 && - git merge --no-commit -s ours B^0 && - git mv c newname && - printf "7\n8\n" >>newname && - git add -u && - git commit -m "Merge commit B^0 into HEAD" && - git tag E + test_create_repo rename-squared-squared && + ( + cd rename-squared-squared && + + printf "1\n2\n3\n4\n5\n6\n" >a && + git add a && + git commit -m A && + git tag A && + + git checkout -b B A && + git mv a b && + echo 7 >>b && + git add -u && + git commit -m B && + + git checkout -b C A && + git mv a c && + git commit -m C && + + git checkout -q B^0 && + git merge --no-commit -s ours C^0 && + git mv b newname && + git commit -m "Merge commit C^0 into HEAD" && + git tag D && + + git checkout -q C^0 && + git merge --no-commit -s ours B^0 && + git mv c newname && + printf "7\n8\n" >>newname && + git add -u && + git commit -m "Merge commit B^0 into HEAD" && + git tag E + ) ' test_expect_success 'handle rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify' ' - git checkout D^0 && + ( + cd rename-squared-squared && - git merge -s recursive E^0 && + git checkout D^0 && - test 1 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git merge -s recursive E^0 && - test $(git rev-parse HEAD:newname) = $(git rev-parse E:newname) + test 1 -eq $(git ls-files -s | wc -l) && + test 0 -eq $(git ls-files -u | wc -l) && + test 0 -eq $(git ls-files -o | wc -l) && + + test $(git rev-parse HEAD:newname) = $(git rev-parse E:newname) + ) ' #
@@ -562,59 +604,63 @@ test_expect_success 'handle rename/rename(1to2)/modify followed by what looks li # renaming carefully (both in the virtual merge base and later), and getting # content merge handled. -test_expect_success 'setup criss-cross + rename/rename/add + modify/modify' ' - git rm -rf . && - git clean -fdqx && - rm -rf .git && - git init && - - printf "lots\nof\nwords\nand\ncontent\n" >a && - git add a && - git commit -m A && - git tag A && - - git checkout -b B A && - git mv a b && - git commit -m B && - - git checkout -b C A && - git mv a c && - printf "2\n3\n4\n5\n6\n7\n" >a && - git add a && - git commit -m C && - - git checkout B^0 && - git merge --no-commit -s ours C^0 && - git checkout C -- a c && - mv a old_a && - echo 1 >a && - cat old_a >>a && - rm old_a && - git add -u && - git commit -m "Merge commit C^0 into HEAD" && - git tag D && - - git checkout C^0 && - git merge --no-commit -s ours B^0 && - git checkout B -- b && - echo 8 >>a && - git add -u && - git commit -m "Merge commit B^0 into HEAD" && - git tag E +test_expect_success 'setup criss-cross + rename/rename/add-source + modify/modify' ' + test_create_repo rename-rename-add-source && + ( + cd rename-rename-add-source && + + printf "lots\nof\nwords\nand\ncontent\n" >a && + git add a && + git commit -m A && + git tag A && + + git checkout -b B A && + git mv a b && + git commit -m B && + + git checkout -b C A && + git mv a c && + printf "2\n3\n4\n5\n6\n7\n" >a && + git add a && + git commit -m C && + + git checkout B^0 && + git merge --no-commit -s ours C^0 && + git checkout C -- a c && + mv a old_a && + echo 1 >a && + cat old_a >>a && + rm old_a && + git add -u && + git commit -m "Merge commit C^0 into HEAD" && + git tag D && + + git checkout C^0 && + git merge --no-commit -s ours B^0 && + git checkout B -- b && + echo 8 >>a && + git add -u && + git commit -m "Merge commit B^0 into HEAD" && + git tag E + ) ' test_expect_failure 'detect rename/rename/add-source for virtual merge-base' ' - git checkout D^0 && + ( + cd rename-rename-add-source && + + git checkout D^0 && - git merge -s recursive E^0 && + git merge -s recursive E^0 && - test 3 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + test 3 -eq $(git ls-files -s | wc -l) && + test 0 -eq $(git ls-files -u | wc -l) && + test 0 -eq $(git ls-files -o | wc -l) && - test $(git rev-parse HEAD:b) = $(git rev-parse A:a) && - test $(git rev-parse HEAD:c) = $(git rev-parse A:a) && - test "$(cat a)" = "$(printf "1\n2\n3\n4\n5\n6\n7\n8\n")" + test $(git rev-parse HEAD:b) = $(git rev-parse A:a) && + test $(git rev-parse HEAD:c) = $(git rev-parse A:a) && + test "$(cat a)" = "$(printf "1\n2\n3\n4\n5\n6\n7\n8\n")" + ) ' #
@@ -638,52 +684,56 @@ test_expect_failure 'detect rename/rename/add-source for virtual merge-base' ' # base of B & C needs to not delete B:c for that to work, though... test_expect_success 'setup criss-cross+rename/rename/add-dest + simple modify' ' - git rm -rf . && - git clean -fdqx && - rm -rf .git && - git init && - - >a && - git add a && - git commit -m A && - git tag A && - - git checkout -b B A && - git mv a b && - printf "1\n2\n3\n4\n5\n6\n7\n" >c && - git add c && - git commit -m B && - - git checkout -b C A && - git mv a c && - git commit -m C && - - git checkout B^0 && - git merge --no-commit -s ours C^0 && - git mv b a && - git commit -m "D is like B but renames b back to a" && - git tag D && - - git checkout B^0 && - git merge --no-commit -s ours C^0 && - git mv b a && - echo 8 >>c && - git add c && - git commit -m "E like D but has mod in c" && - git tag E + test_create_repo rename-rename-add-dest && + ( + cd rename-rename-add-dest && + + >a && + git add a && + git commit -m A && + git tag A && + + git checkout -b B A && + git mv a b && + printf "1\n2\n3\n4\n5\n6\n7\n" >c && + git add c && + git commit -m B && + + git checkout -b C A && + git mv a c && + git commit -m C && + + git checkout B^0 && + git merge --no-commit -s ours C^0 && + git mv b a && + git commit -m "D is like B but renames b back to a" && + git tag D && + + git checkout B^0 && + git merge --no-commit -s ours C^0 && + git mv b a && + echo 8 >>c && + git add c && + git commit -m "E like D but has mod in c" && + git tag E + ) ' test_expect_success 'virtual merge base handles rename/rename(1to2)/add-dest' ' - git checkout D^0 && + ( + cd rename-rename-add-dest && + + git checkout D^0 && - git merge -s recursive E^0 && + git merge -s recursive E^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + test 2 -eq $(git ls-files -s | wc -l) && + test 0 -eq $(git ls-files -u | wc -l) && + test 0 -eq $(git ls-files -o | wc -l) && - test $(git rev-parse HEAD:a) = $(git rev-parse A:a) && - test $(git rev-parse HEAD:c) = $(git rev-parse E:c) + test $(git rev-parse HEAD:a) = $(git rev-parse A:a) && + test $(git rev-parse HEAD:c) = $(git rev-parse E:c) + ) ' test_done
t/t6042-merge-rename-corner-cases.sh +474 -413
1,021 lines not on this page · raw message
Signature · 1 line
2.17.0.1.gda85003413
PATCH 2/5 t6036, t6042: use test_line_count instead of wc -l
In reply to Elijah Newren--- t/t6036-recursive-corner-cases.sh | 102 ++++++++++++++++++--------- t/t6042-merge-rename-corner-cases.sh | 99 +++++++++++++++++--------- 2 files changed, 134 insertions(+), 67 deletions(-)
t/t6036-recursive-corner-cases.sh +68 -34
@@ -65,9 +65,12 @@ test_expect_success 'merge simple rename+criss-cross with no modifications' ' test_must_fail git merge -s recursive R2^0 && - test 2 = $(git ls-files -s | wc -l) && - test 2 = $(git ls-files -u | wc -l) && - test 2 = $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 3 out && test $(git rev-parse :2:three) = $(git rev-parse L2:three) && test $(git rev-parse :3:three) = $(git rev-parse R2:three) &&
@@ -135,9 +138,12 @@ test_expect_success 'merge criss-cross + rename merges with basic modification' test_must_fail git merge -s recursive R2^0 && - test 2 = $(git ls-files -s | wc -l) && - test 2 = $(git ls-files -u | wc -l) && - test 2 = $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 3 out && test $(git rev-parse :2:three) = $(git rev-parse L2:three) && test $(git rev-parse :3:three) = $(git rev-parse R2:three) &&
@@ -211,9 +217,12 @@ test_expect_success 'git detects differently handled merges conflict' ' test_must_fail git merge -s recursive E^0 && - test 3 = $(git ls-files -s | wc -l) && - test 3 = $(git ls-files -u | wc -l) && - test 0 = $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 3 out && + git ls-files -u >out && + test_line_count = 3 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse :2:new_a) = $(git rev-parse D:new_a) && test $(git rev-parse :3:new_a) = $(git rev-parse E:new_a) &&
@@ -297,8 +306,10 @@ test_expect_success 'git detects conflict merging criss-cross+modify/delete' ' test_must_fail git merge -s recursive E^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && test $(git rev-parse :1:file) = $(git rev-parse master:file) && test $(git rev-parse :2:file) = $(git rev-parse B:file)
@@ -314,8 +325,10 @@ test_expect_success 'git detects conflict merging criss-cross+modify/delete, rev test_must_fail git merge -s recursive D^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && test $(git rev-parse :1:file) = $(git rev-parse master:file) && test $(git rev-parse :3:file) = $(git rev-parse B:file)
@@ -423,9 +436,12 @@ test_expect_success 'merge of D & E1 fails but has appropriate contents' ' test_must_fail git merge -s recursive E1^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 1 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 1 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && test $(git rev-parse :2:a) = $(git rev-parse B:a)
@@ -440,9 +456,12 @@ test_expect_success 'merge of E1 & D fails but has appropriate contents' ' test_must_fail git merge -s recursive D^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 1 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 1 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && test $(git rev-parse :3:a) = $(git rev-parse B:a)
@@ -457,9 +476,12 @@ test_expect_success 'merge of D & E2 fails but has appropriate contents' ' test_must_fail git merge -s recursive E2^0 && - test 4 -eq $(git ls-files -s | wc -l) && - test 3 -eq $(git ls-files -u | wc -l) && - test 1 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 4 out && + git ls-files -u >out && + test_line_count = 3 out && + git ls-files -o >out && + test_line_count = 2 out && test $(git rev-parse :2:a) = $(git rev-parse B:a) && test $(git rev-parse :3:a/file) = $(git rev-parse E2:a/file) &&
@@ -478,9 +500,12 @@ test_expect_success 'merge of E2 & D fails but has appropriate contents' ' test_must_fail git merge -s recursive D^0 && - test 4 -eq $(git ls-files -s | wc -l) && - test 3 -eq $(git ls-files -u | wc -l) && - test 1 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 4 out && + git ls-files -u >out && + test_line_count = 3 out && + git ls-files -o >out && + test_line_count = 2 out && test $(git rev-parse :3:a) = $(git rev-parse B:a) && test $(git rev-parse :2:a/file) = $(git rev-parse E2:a/file) &&
@@ -574,9 +599,12 @@ test_expect_success 'handle rename/rename(1to2)/modify followed by what looks li git merge -s recursive E^0 && - test 1 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 1 out && + git ls-files -u >out && + test_line_count = 0 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse HEAD:newname) = $(git rev-parse E:newname) )
@@ -653,9 +681,12 @@ test_expect_failure 'detect rename/rename/add-source for virtual merge-base' ' git merge -s recursive E^0 && - test 3 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 3 out && + git ls-files -u >out && + test_line_count = 0 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse HEAD:b) = $(git rev-parse A:a) && test $(git rev-parse HEAD:c) = $(git rev-parse A:a) &&
@@ -727,9 +758,12 @@ test_expect_success 'virtual merge base handles rename/rename(1to2)/add-dest' ' git merge -s recursive E^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 0 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse HEAD:a) = $(git rev-parse A:a) && test $(git rev-parse HEAD:c) = $(git rev-parse E:c)
t/t6042-merge-rename-corner-cases.sh +66 -33
165 lines not on this page · raw message
Signature · 1 line
2.17.0.1.gda85003413
Re: [PATCH 2/5] t6036, t6042: use test_line_count instead of wc -l
Quoted 12 lines
Signed-off-by Elijah Newren <[email protected]>--- t/t6036-recursive-corner-cases.sh | 102 ++++++++++++++++++--------- t/t6042-merge-rename-corner-cases.sh | 99 +++++++++++++++++--------- 2 files changed, 134 insertions(+), 67 deletions(-)t/t6036-recursive-corner-cases.sh +0
-0
t/t6036-recursive-corner-cases.sh test_expect_success 'merge simple rename+criss-cross with no modifications' ' · line 70
Quoted 6 lines
t/t6036-recursive-corner-cases.sh +0
-3@@ -65,9 +65,12 @@ test_expect_success 'merge simple rename+criss-cross with no modifications' ' test_must_fail git merge -s recursive R2^0 && - test 2 = $(git ls-files -s | wc -l) && - test 2 = $(git ls-files -u | wc -l) && - test 2 = $(git ls-files -o | wc -l) &&
Here 'git ls-files -o' should have listed two untracked files ...
t/t6036-recursive-corner-cases.sh test_expect_success 'merge simple rename+criss-cross with no modifications' ' · line 73
Quoted 6 lines
t/t6036-recursive-corner-cases.sh +6
-0+ git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 3 out &&
... but now you expect it to list three. I was about to point out the typo, but then noticed that you expect it to list one more untracked file than before in all subsequent tests... now that can't be just a typo, can it?
Please mention in the commit message that when using an intermediate file to store the output, 'git ls-files -o' will list that file, too, that's why the number of expected untracked files had to be adjusted; so future readers won't have to figure this out themselves.
An alternative to consider would be to add a .gitignore file in the initial commit to ignore 'out', then the number of untracked files don't have to be adjusted.
[I have no further comments, but leave the rest of the patch below, so anyone can readily check the increased number of untracked files in subsequent tests.]
Quoted 356 lines
t/t6036-recursive-corner-cases.sh +62
-31test $(git rev-parse :2:three) = $(git rev-parse L2:three) && test $(git rev-parse :3:three) = $(git rev-parse R2:three) &&@@ -135,9 +138,12 @@ test_expect_success 'merge criss-cross + rename merges with basic modification' test_must_fail git merge -s recursive R2^0 && - test 2 = $(git ls-files -s | wc -l) && - test 2 = $(git ls-files -u | wc -l) && - test 2 = $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 3 out && test $(git rev-parse :2:three) = $(git rev-parse L2:three) && test $(git rev-parse :3:three) = $(git rev-parse R2:three) &&@@ -211,9 +217,12 @@ test_expect_success 'git detects differently handled merges conflict' ' test_must_fail git merge -s recursive E^0 && - test 3 = $(git ls-files -s | wc -l) && - test 3 = $(git ls-files -u | wc -l) && - test 0 = $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 3 out && + git ls-files -u >out && + test_line_count = 3 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse :2:new_a) = $(git rev-parse D:new_a) && test $(git rev-parse :3:new_a) = $(git rev-parse E:new_a) &&@@ -297,8 +306,10 @@ test_expect_success 'git detects conflict merging criss-cross+modify/delete' ' test_must_fail git merge -s recursive E^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && test $(git rev-parse :1:file) = $(git rev-parse master:file) && test $(git rev-parse :2:file) = $(git rev-parse B:file)@@ -314,8 +325,10 @@ test_expect_success 'git detects conflict merging criss-cross+modify/delete, rev test_must_fail git merge -s recursive D^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && test $(git rev-parse :1:file) = $(git rev-parse master:file) && test $(git rev-parse :3:file) = $(git rev-parse B:file)@@ -423,9 +436,12 @@ test_expect_success 'merge of D & E1 fails but has appropriate contents' ' test_must_fail git merge -s recursive E1^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 1 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 1 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && test $(git rev-parse :2:a) = $(git rev-parse B:a)@@ -440,9 +456,12 @@ test_expect_success 'merge of E1 & D fails but has appropriate contents' ' test_must_fail git merge -s recursive D^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 1 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 1 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && test $(git rev-parse :3:a) = $(git rev-parse B:a)@@ -457,9 +476,12 @@ test_expect_success 'merge of D & E2 fails but has appropriate contents' ' test_must_fail git merge -s recursive E2^0 && - test 4 -eq $(git ls-files -s | wc -l) && - test 3 -eq $(git ls-files -u | wc -l) && - test 1 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 4 out && + git ls-files -u >out && + test_line_count = 3 out && + git ls-files -o >out && + test_line_count = 2 out && test $(git rev-parse :2:a) = $(git rev-parse B:a) && test $(git rev-parse :3:a/file) = $(git rev-parse E2:a/file) &&@@ -478,9 +500,12 @@ test_expect_success 'merge of E2 & D fails but has appropriate contents' ' test_must_fail git merge -s recursive D^0 && - test 4 -eq $(git ls-files -s | wc -l) && - test 3 -eq $(git ls-files -u | wc -l) && - test 1 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 4 out && + git ls-files -u >out && + test_line_count = 3 out && + git ls-files -o >out && + test_line_count = 2 out && test $(git rev-parse :3:a) = $(git rev-parse B:a) && test $(git rev-parse :2:a/file) = $(git rev-parse E2:a/file) &&@@ -574,9 +599,12 @@ test_expect_success 'handle rename/rename(1to2)/modify followed by what looks li git merge -s recursive E^0 && - test 1 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 1 out && + git ls-files -u >out && + test_line_count = 0 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse HEAD:newname) = $(git rev-parse E:newname) )@@ -653,9 +681,12 @@ test_expect_failure 'detect rename/rename/add-source for virtual merge-base' ' git merge -s recursive E^0 && - test 3 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 3 out && + git ls-files -u >out && + test_line_count = 0 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse HEAD:b) = $(git rev-parse A:a) && test $(git rev-parse HEAD:c) = $(git rev-parse A:a) &&@@ -727,9 +758,12 @@ test_expect_success 'virtual merge base handles rename/rename(1to2)/add-dest' ' git merge -s recursive E^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 0 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse HEAD:a) = $(git rev-parse A:a) && test $(git rev-parse HEAD:c) = $(git rev-parse E:c)t/t6042-merge-rename-corner-cases.sh +66
-33@@ -116,9 +116,12 @@ test_expect_failure 'conflict caused if rename not detected' ' git checkout -q C^0 && git merge -s recursive B^0 && - test 3 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 3 out && + git ls-files -u >out && + test_line_count = 0 out && + git ls-files -o >out && + test_line_count = 1 out && test_line_count = 6 c && test $(git rev-parse HEAD:a) = $(git rev-parse B:a) &&@@ -203,9 +206,12 @@ test_expect_failure 'detect rename/add-source and preserve all data' ' git merge -s recursive C^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 1 out && test -f a && test -f b &&@@ -223,9 +229,12 @@ test_expect_failure 'detect rename/add-source and preserve all data, merge other git merge -s recursive B^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 1 out && test -f a && test -f b &&@@ -279,9 +288,12 @@ test_expect_success 'rename/directory conflict + clean content merge' ' test_must_fail git merge -s recursive right^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 1 -eq $(git ls-files -u | wc -l) && - test 1 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 1 out && + git ls-files -o >out && + test_line_count = 2 out && echo 0 >expect && git cat-file -p base:file >>expect &&@@ -307,9 +319,12 @@ test_expect_success 'rename/directory conflict + content merge conflict' ' test_must_fail git merge -s recursive right^0 && - test 4 -eq $(git ls-files -s | wc -l) && - test 3 -eq $(git ls-files -u | wc -l) && - test 1 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 4 out && + git ls-files -u >out && + test_line_count = 3 out && + git ls-files -o >out && + test_line_count = 2 out && git cat-file -p left-conflict:newfile >left && git cat-file -p base:file >base &&@@ -367,9 +382,12 @@ test_expect_success 'disappearing dir in rename/directory conflict handled' ' git merge -s recursive right^0 && - test 1 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 1 out && + git ls-files -u >out && + test_line_count = 0 out && + git ls-files -o >out && + test_line_count = 1 out && echo 0 >expect && git cat-file -p base:sub/file >>expect &&@@ -426,10 +444,14 @@ test_expect_success 'handle rename/rename (2to1) conflict correctly' ' test_must_fail git merge -s recursive C^0 >out && test_i18ngrep "CONFLICT (rename/rename)" out && - test 2 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u | wc -l) && - test 2 -eq $(git ls-files -u c | wc -l) && - test 3 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -u c >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 3 out && test ! -f a && test ! -f b &&@@ -476,9 +498,12 @@ test_expect_success 'merge has correct working tree contents' ' test_must_fail git merge -s recursive B^0 && - test 3 -eq $(git ls-files -s | wc -l) && - test 3 -eq $(git ls-files -u | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 3 out && + git ls-files -u >out && + test_line_count = 3 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse :1:a) = $(git rev-parse A:a) && test $(git rev-parse :3:b) = $(git rev-parse A:a) &&@@ -527,8 +552,10 @@ test_expect_failure 'detect conflict with rename/rename(1to2)/add-source merge' test_must_fail git merge -s recursive C^0 && - test 4 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 4 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse 3:a) = $(git rev-parse C:a) && test $(git rev-parse 1:a) = $(git rev-parse A:a) &&@@ -573,8 +600,10 @@ test_expect_failure 'rename/rename/add-source still tracks new a file' ' git checkout C^0 && git merge -s recursive B^0 && - test 2 -eq $(git ls-files -s | wc -l) && - test 0 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 1 out && test $(git rev-parse HEAD:a) = $(git rev-parse C:a) && test $(git rev-parse HEAD:b) = $(git rev-parse A:a)@@ -615,10 +644,14 @@ test_expect_success 'rename/rename/add-dest merge still knows about conflicting git checkout C^0 && test_must_fail git merge -s recursive B^0 && - test 5 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u b | wc -l) && - test 2 -eq $(git ls-files -u c | wc -l) && - test 4 -eq $(git ls-files -o | wc -l) && + git ls-files -s >out && + test_line_count = 5 out && + git ls-files -u b >out && + test_line_count = 2 out && + git ls-files -u c >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 5 out && test $(git rev-parse :1:a) = $(git rev-parse A:a) && test $(git rev-parse :2:b) = $(git rev-parse C:b) &&Signature · 1 line
2.17.0.1.gda85003413
Re: [PATCH 2/5] t6036, t6042: use test_line_count instead of wc -l
Quoted 28 lines · SZEDER Gábor
Quoted 12 lines
Signed-off-by Elijah Newren <[email protected]>--- t/t6036-recursive-corner-cases.sh | 102 ++++++++++++++++++--------- t/t6042-merge-rename-corner-cases.sh | 99 +++++++++++++++++--------- 2 files changed, 134 insertions(+), 67 deletions(-)t/t6036-recursive-corner-cases.sh +0
-0t/t6036-recursive-corner-cases.sh test_expect_success 'merge simple rename+criss-cross with no modifications' ' · line 70
Quoted 6 lines
t/t6036-recursive-corner-cases.sh +0
-3@@ -65,9 +65,12 @@ test_expect_success 'merge simple rename+criss-cross with no modifications' ' test_must_fail git merge -s recursive R2^0 && - test 2 = $(git ls-files -s | wc -l) && - test 2 = $(git ls-files -u | wc -l) && - test 2 = $(git ls-files -o | wc -l) &&Here 'git ls-files -o' should have listed two untracked files ...
t/t6036-recursive-corner-cases.sh test_expect_success 'merge simple rename+criss-cross with no modifications' ' · line 73
Quoted 6 lines
t/t6036-recursive-corner-cases.sh +6
-0+ git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 3 out &&
Quoted 3 lines
... but now you expect it to list three. I was about to point out the typo, but then noticed that you expect it to list one more untracked file than before in all subsequent tests...
Hrm, not all, actually, because there is this one exception:
Quoted 2 lines
t/t6036-recursive-corner-cases.sh test_expect_success 'handle rename/rename (2to1) conflict correctly' ' · line 444
Quoted 2 lines
t/t6036-recursive-corner-cases.sh +0
-0@@ -426,10 +444,14 @@ test_expect_success 'handle rename/rename (2to1) conflict correctly' ' test_must_fail git merge -s recursive C^0 >out &&
Note that the file 'out' is created here ...
Quoted 6 lines
t/t6036-recursive-corner-cases.sh test_expect_success 'handle rename/rename (2to1) conflict correctly' ' · line 432
Quoted 6 lines
t/t6036-recursive-corner-cases.sh +0
-4test_i18ngrep "CONFLICT (rename/rename)" out && - test 2 -eq $(git ls-files -s | wc -l) && - test 2 -eq $(git ls-files -u | wc -l) && - test 2 -eq $(git ls-files -u c | wc -l) && - test 3 -eq $(git ls-files -o | wc -l) &&
... so this 'git ls-files -o' already lists it as well, ...
Quoted 8 lines
t/t6036-recursive-corner-cases.sh test_expect_success 'handle rename/rename (2to1) conflict correctly' ' · line 454
Quoted 8 lines
t/t6036-recursive-corner-cases.sh +8
-0+ git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -u c >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 3 out &&
... therefore the number of untracked files here remains unchanged.
Quoted 3 lines
Quoted 3 lines
t/t6036-recursive-corner-cases.sh +0
-0test ! -f a && test ! -f b &&
Re: [PATCH 2/5] t6036, t6042: use test_line_count instead of wc -l
In reply to SZEDER GáborQuoted 24 lines · SZEDER Gábor
t/t6036-recursive-corner-cases.sh test_expect_success 'merge simple rename+criss-cross with no modifications' ' · line 70
Quoted 9 lines
t/t6036-recursive-corner-cases.sh +0
-3@@ -65,9 +65,12 @@ test_expect_success 'merge simple rename+criss-cross with no modifications' ' test_must_fail git merge -s recursive R2^0 && - test 2 = $(git ls-files -s | wc -l) && - test 2 = $(git ls-files -u | wc -l) && - test 2 = $(git ls-files -o | wc -l) &&Here 'git ls-files -o' should have listed two untracked files ...
t/t6036-recursive-corner-cases.sh test_expect_success 'merge simple rename+criss-cross with no modifications' ' · line 73
Quoted 6 lines
t/t6036-recursive-corner-cases.sh +6
-0+ git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 3 out &&... but now you expect it to list three. I was about to point out the typo, but then noticed that you expect it to list one more untracked file than before in all subsequent tests... now that can't be just a typo, can it?
Quoted 4 lines
Please mention in the commit message that when using an intermediate file to store the output, 'git ls-files -o' will list that file, too, that's why the number of expected untracked files had to be adjusted; so future readers won't have to figure this out themselves.
How does adding the following to the commit message sound?
Changing to use test_line_count means using an intermediate file to store the output, which means that 'git ls-files -o' will have an additional file to list, which means that the number of lines expected in some tests will therefore change as well (unless the same intermediate file was used to capture the output of a previous command).
I'll include that in my next roll of the series after waiting for any other fixups folks point out. Sorry for the trouble.
As always, thanks for taking a look!
Re: [PATCH 2/5] t6036, t6042: use test_line_count instead of wc -l
In reply to SZEDER GáborQuoted 18 lines · SZEDER Gábor
t/t6036-recursive-corner-cases.sh test_expect_success 'merge simple rename+criss-cross with no modifications' ' · line 70
Quoted 3 lines
t/t6036-recursive-corner-cases.sh +0
-3- test 2 = $(git ls-files -s | wc -l) && - test 2 = $(git ls-files -u | wc -l) && - test 2 = $(git ls-files -o | wc -l) &&Here 'git ls-files -o' should have listed two untracked files ...
t/t6036-recursive-corner-cases.sh test_expect_success 'merge simple rename+criss-cross with no modifications' ' · line 73
Quoted 6 lines
t/t6036-recursive-corner-cases.sh +6
-0+ git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 3 out &&... but now you expect it to list three. I was about to point out the typo, but then noticed that you expect it to list one more untracked file than before in all subsequent tests... now that can't be just a typo, can it?
Quoted 4 lines
Please mention in the commit message that when using an intermediate file to store the output, 'git ls-files -o' will list that file, too, that's why the number of expected untracked files had to be adjusted; so future readers won't have to figure this out themselves.
I'd expect that a reader of the commit who cares enough to bother to wonder by looking at the patch and seeing that 2 became 3 would know why already. And a reader of the resulting file would not know that the 3 used to be 2, and won't be helped by "we used to count to 2, now we have 'out' also counted" that much, especially in the commit log message. What would help the latter would be to name which three paths we expect to see in the comment (or test against the exact list of paths, instead of using test_line_count).
Quoted 3 lines
An alternative to consider would be to add a .gitignore file in the initial commit to ignore 'out', then the number of untracked files don't have to be adjusted.
I think that is a preferred solution that we've used in ls-files and status tests successfully.
Re: [PATCH 2/5] t6036, t6042: use test_line_count instead of wc -l
Quoted 34 lines · Junio C Hamano
Quoted 18 lines · SZEDER Gábor
t/t6036-recursive-corner-cases.sh test_expect_success 'merge simple rename+criss-cross with no modifications' ' · line 70
Quoted 3 lines
t/t6036-recursive-corner-cases.sh +0
-3- test 2 = $(git ls-files -s | wc -l) && - test 2 = $(git ls-files -u | wc -l) && - test 2 = $(git ls-files -o | wc -l) &&Here 'git ls-files -o' should have listed two untracked files ...
t/t6036-recursive-corner-cases.sh test_expect_success 'merge simple rename+criss-cross with no modifications' ' · line 73
Quoted 6 lines
t/t6036-recursive-corner-cases.sh +6
-0+ git ls-files -s >out && + test_line_count = 2 out && + git ls-files -u >out && + test_line_count = 2 out && + git ls-files -o >out && + test_line_count = 3 out &&... but now you expect it to list three. I was about to point out the typo, but then noticed that you expect it to list one more untracked file than before in all subsequent tests... now that can't be just a typo, can it?
Quoted 4 lines
Please mention in the commit message that when using an intermediate file to store the output, 'git ls-files -o' will list that file, too, that's why the number of expected untracked files had to be adjusted; so future readers won't have to figure this out themselves.
I'd expect that a reader of the commit who cares enough to bother to wonder by looking at the patch and seeing that 2 became 3 would know why already. And a reader of the resulting file would not know that the 3 used to be 2, and won't be helped by "we used to count to 2, now we have 'out' also counted" that much, especially in the commit log message. What would help the latter would be to name which three paths we expect to see in the comment (or test against the exact list of paths, instead of using
test_line_count).
Quoted 6 lines
Quoted 3 lines
An alternative to consider would be to add a .gitignore file in the initial commit to ignore 'out', then the number of untracked files don't have to be adjusted.
I think that is a preferred solution that we've used in ls-files and status tests successfully.
...except that if we add a .gitignore to each initial commit (we use test_create_repo for nearly every test to keep them separable meaning we'd have to do this many times), then four lines above we have to adjust the number of expected tracked files. And, for it to work, we'd have to add an --exclude-standard flag to ls-files -o.
I can make that change if you both want it, but it seems like it's actually making it harder to follow the changes rather than easier.
PATCH 3/5 t6036, t6042: prefer test_path_is_file, test_path_is_missing
In reply to Elijah Newren--- t/t6036-recursive-corner-cases.sh | 4 +-- t/t6042-merge-rename-corner-cases.sh | 40 ++++++++++++++-------------- 2 files changed, 22 insertions(+), 22 deletions(-)
t/t6036-recursive-corner-cases.sh +2 -2
@@ -488,7 +488,7 @@ test_expect_success 'merge of D & E2 fails but has appropriate contents' ' test $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) && test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && - test -f a~HEAD + test_path_is_file a~HEAD ) '
@@ -512,7 +512,7 @@ test_expect_success 'merge of E2 & D fails but has appropriate contents' ' test $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) && test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && - test -f a~D^0 + test_path_is_file a~D^0 ) '
t/t6042-merge-rename-corner-cases.sh +20 -20
@@ -38,7 +38,7 @@ test_expect_success "Does git preserve Gollum's precious artifact?" ' test_must_fail git merge -s recursive rename-the-ring && # Make sure git did not delete an untracked file - test -f ring + test_path_is_file ring ) '
@@ -213,8 +213,8 @@ test_expect_failure 'detect rename/add-source and preserve all data' ' git ls-files -o >out && test_line_count = 1 out && - test -f a && - test -f b && + test_path_is_file a && + test_path_is_file b && test $(git rev-parse HEAD:b) = $(git rev-parse A:a) && test $(git rev-parse HEAD:a) = $(git rev-parse C:a)
@@ -236,8 +236,8 @@ test_expect_failure 'detect rename/add-source and preserve all data, merge other git ls-files -o >out && test_line_count = 1 out && - test -f a && - test -f b && + test_path_is_file a && + test_path_is_file b && test $(git rev-parse HEAD:b) = $(git rev-parse A:a) && test $(git rev-parse HEAD:a) = $(git rev-parse C:a)
@@ -302,8 +302,8 @@ test_expect_success 'rename/directory conflict + clean content merge' ' test $(git rev-parse :2:newfile) = $(git hash-object expect) && - test -f newfile/realfile && - test -f newfile~HEAD + test_path_is_file newfile/realfile && + test_path_is_file newfile~HEAD ) '
@@ -340,8 +340,8 @@ test_expect_success 'rename/directory conflict + content merge conflict' ' test $(git rev-parse :2:newfile) = $(git rev-parse left-conflict:newfile) && test $(git rev-parse :3:newfile) = $(git rev-parse right:file) && - test -f newfile/realfile && - test -f newfile~HEAD + test_path_is_file newfile/realfile && + test_path_is_file newfile~HEAD ) '
@@ -394,7 +394,7 @@ test_expect_success 'disappearing dir in rename/directory conflict handled' ' echo 7 >>expect && test_cmp expect sub && - test -f sub + test_path_is_file sub ) '
@@ -453,10 +453,10 @@ test_expect_success 'handle rename/rename (2to1) conflict correctly' ' git ls-files -o >out && test_line_count = 3 out && - test ! -f a && - test ! -f b && - test -f c~HEAD && - test -f c~C^0 && + test_path_is_missing a && + test_path_is_missing b && + test_path_is_file c~HEAD && + test_path_is_file c~C^0 && test $(git hash-object c~HEAD) = $(git rev-parse C:a) && test $(git hash-object c~C^0) = $(git rev-parse B:b)
@@ -509,7 +509,7 @@ test_expect_success 'merge has correct working tree contents' ' test $(git rev-parse :3:b) = $(git rev-parse A:a) && test $(git rev-parse :2:c) = $(git rev-parse A:a) && - test ! -f a && + test_path_is_missing a && test $(git hash-object b) = $(git rev-parse A:a) && test $(git hash-object c) = $(git rev-parse A:a) )
@@ -562,9 +562,9 @@ test_expect_failure 'detect conflict with rename/rename(1to2)/add-source merge' test $(git rev-parse 2:b) = $(git rev-parse B:b) && test $(git rev-parse 3:c) = $(git rev-parse C:c) && - test -f a && - test -f b && - test -f c + test_path_is_file a && + test_path_is_file b && + test_path_is_file c ) '
@@ -664,8 +664,8 @@ test_expect_success 'rename/rename/add-dest merge still knows about conflicting test $(git hash-object b~HEAD) = $(git rev-parse C:b) && test $(git hash-object b~B\^0) = $(git rev-parse B:b) && - test ! -f b && - test ! -f c + test_path_is_missing b && + test_path_is_missing c ) '
Signature · 1 line
2.17.0.1.gda85003413
PATCH 4/5 t6036, t6042: prefer test_cmp to sequences of test
In reply to Elijah Newren--- t/t6036-recursive-corner-cases.sh | 109 +++++++++++++++++---------- t/t6042-merge-rename-corner-cases.sh | 94 ++++++++++++++--------- 2 files changed, 130 insertions(+), 73 deletions(-)
t/t6036-recursive-corner-cases.sh +71 -38
@@ -72,11 +72,14 @@ test_expect_success 'merge simple rename+criss-cross with no modifications' ' git ls-files -o >out && test_line_count = 3 out && - test $(git rev-parse :2:three) = $(git rev-parse L2:three) && - test $(git rev-parse :3:three) = $(git rev-parse R2:three) && - - test $(git rev-parse L2:three) = $(git hash-object three~HEAD) && - test $(git rev-parse R2:three) = $(git hash-object three~R2^0) + git rev-parse >expect \ + L2:three R2:three \ + L2:three R2:three && + git rev-parse >actual \ + :2:three :3:three && + git hash-object >>actual \ + three~HEAD three~R2^0 + test_cmp expect actual ) '
@@ -145,11 +148,14 @@ test_expect_success 'merge criss-cross + rename merges with basic modification' git ls-files -o >out && test_line_count = 3 out && - test $(git rev-parse :2:three) = $(git rev-parse L2:three) && - test $(git rev-parse :3:three) = $(git rev-parse R2:three) && - - test $(git rev-parse L2:three) = $(git hash-object three~HEAD) && - test $(git rev-parse R2:three) = $(git hash-object three~R2^0) + git rev-parse >expect \ + L2:three R2:three \ + L2:three R2:three && + git rev-parse >actual \ + :2:three :3:three && + git hash-object >>actual \ + three~HEAD three~R2^0 + test_cmp expect actual ) '
@@ -224,19 +230,23 @@ test_expect_success 'git detects differently handled merges conflict' ' git ls-files -o >out && test_line_count = 1 out && - test $(git rev-parse :2:new_a) = $(git rev-parse D:new_a) && - test $(git rev-parse :3:new_a) = $(git rev-parse E:new_a) && + git rev-parse >expect \ + D:new_a E:new_a && + git rev-parse >actual \ + :2:new_a :3:new_a && + test_cmp expect actual - git cat-file -p B:new_a >>merged && - git cat-file -p C:new_a >>merge-me && + git cat-file -p B:new_a >ours && + git cat-file -p C:new_a >theirs && >empty && test_must_fail git merge-file \ -L "Temporary merge branch 2" \ -L "" \ -L "Temporary merge branch 1" \ - merged empty merge-me && - sed -e "s/^\([<=>]\)/\1\1\1/" merged >merged-internal && - test $(git rev-parse :1:new_a) = $(git hash-object merged-internal) + ours empty theirs && + sed -e "s/^\([<=>]\)/\1\1\1/" ours >expect && + git cat-file -p :1:new_a >actual && + test_cmp expect actual ) '
@@ -311,8 +321,11 @@ test_expect_success 'git detects conflict merging criss-cross+modify/delete' ' git ls-files -u >out && test_line_count = 2 out && - test $(git rev-parse :1:file) = $(git rev-parse master:file) && - test $(git rev-parse :2:file) = $(git rev-parse B:file) + git rev-parse >expect \ + master:file B:file && + git rev-parse >actual \ + :1:file :2:file && + test_cmp expect actual ) '
@@ -330,8 +343,11 @@ test_expect_success 'git detects conflict merging criss-cross+modify/delete, rev git ls-files -u >out && test_line_count = 2 out && - test $(git rev-parse :1:file) = $(git rev-parse master:file) && - test $(git rev-parse :3:file) = $(git rev-parse B:file) + git rev-parse >expect \ + master:file B:file && + git rev-parse >actual \ + :1:file :3:file && + test_cmp expect actual ) '
@@ -443,8 +459,11 @@ test_expect_success 'merge of D & E1 fails but has appropriate contents' ' git ls-files -o >out && test_line_count = 1 out && - test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && - test $(git rev-parse :2:a) = $(git rev-parse B:a) + git rev-parse >expect \ + A:ignore-me B:a && + git rev-parse >actual \ + :0:ignore-me :2:a && + test_cmp expect actual ) '
@@ -463,8 +482,11 @@ test_expect_success 'merge of E1 & D fails but has appropriate contents' ' git ls-files -o >out && test_line_count = 1 out && - test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && - test $(git rev-parse :3:a) = $(git rev-parse B:a) + git rev-parse >expect \ + A:ignore-me B:a && + git rev-parse >actual \ + :0:ignore-me :3:a && + test_cmp expect actual ) '
@@ -483,10 +505,11 @@ test_expect_success 'merge of D & E2 fails but has appropriate contents' ' git ls-files -o >out && test_line_count = 2 out && - test $(git rev-parse :2:a) = $(git rev-parse B:a) && - test $(git rev-parse :3:a/file) = $(git rev-parse E2:a/file) && - test $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) && - test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && + git rev-parse >expect \ + B:a E2:a/file c:a/file A:ignore-me && + git rev-parse >actual \ + :2:a :3:a/file :1:a/file :0:ignore-me && + test_cmp expect actual test_path_is_file a~HEAD )
@@ -507,10 +530,11 @@ test_expect_success 'merge of E2 & D fails but has appropriate contents' ' git ls-files -o >out && test_line_count = 2 out && - test $(git rev-parse :3:a) = $(git rev-parse B:a) && - test $(git rev-parse :2:a/file) = $(git rev-parse E2:a/file) && - test $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) && - test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) && + git rev-parse >expect \ + B:a E2:a/file c:a/file A:ignore-me && + git rev-parse >actual \ + :3:a :2:a/file :1:a/file :0:ignore-me && + test_cmp expect actual test_path_is_file a~D^0 )
@@ -688,9 +712,15 @@ test_expect_failure 'detect rename/rename/add-source for virtual merge-base' ' git ls-files -o >out && test_line_count = 1 out && - test $(git rev-parse HEAD:b) = $(git rev-parse A:a) && - test $(git rev-parse HEAD:c) = $(git rev-parse A:a) && - test "$(cat a)" = "$(printf "1\n2\n3\n4\n5\n6\n7\n8\n")" + printf "1\n2\n3\n4\n5\n6\n7\n8\n" >correct && + git rev-parse >expect \ + A:a A:a \ + correct && + git rev-parse >actual \ + :0:b :0:c && + git hash-object >>actual \ + a && + test_cmp expect actual ) '
@@ -765,8 +795,11 @@ test_expect_success 'virtual merge base handles rename/rename(1to2)/add-dest' ' git ls-files -o >out && test_line_count = 1 out && - test $(git rev-parse HEAD:a) = $(git rev-parse A:a) && - test $(git rev-parse HEAD:c) = $(git rev-parse E:c) + git rev-parse >expect \ + A:a E:c && + git rev-parse >actual \ + :0:a :0:c && + test_cmp expect actual ) '
t/t6042-merge-rename-corner-cases.sh +59 -35
155 lines not on this page · raw message
Signature · 1 line
2.17.0.1.gda85003413
PATCH 5/5 t6036: prefer test_when_finished to manual cleanup in following test
In reply to Elijah NewrenManually cleaning up from former tests in subsequent ones breaks the ability to select which tests we want to run. Use test_when_finished to avoid this problem.
--- t/t6036-recursive-corner-cases.sh | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-)
t/t6036-recursive-corner-cases.sh +12 -10
@@ -4,12 +4,6 @@ test_description='recursive merge corner cases involving criss-cross merges' . ./test-lib.sh -get_clean_checkout () { - git reset --hard && - git clean -fdqx && - git checkout "$1" -} - # # L1 L2 # o---o
@@ -445,10 +439,12 @@ test_expect_success 'setup differently handled merges of directory/file conflict ' test_expect_success 'merge of D & E1 fails but has appropriate contents' ' + test_when_finished "git -C directory-file reset --hard" && + test_when_finished "git -C directory-file clean -fdqx" && ( cd directory-file && - get_clean_checkout D^0 && + git checkout D^0 && test_must_fail git merge -s recursive E1^0 &&
@@ -468,10 +464,12 @@ test_expect_success 'merge of D & E1 fails but has appropriate contents' ' ' test_expect_success 'merge of E1 & D fails but has appropriate contents' ' + test_when_finished "git -C directory-file reset --hard" && + test_when_finished "git -C directory-file clean -fdqx" && ( cd directory-file && - get_clean_checkout E1^0 && + git checkout E1^0 && test_must_fail git merge -s recursive D^0 &&
@@ -491,10 +489,12 @@ test_expect_success 'merge of E1 & D fails but has appropriate contents' ' ' test_expect_success 'merge of D & E2 fails but has appropriate contents' ' + test_when_finished "git -C directory-file reset --hard" && + test_when_finished "git -C directory-file clean -fdqx" && ( cd directory-file && - get_clean_checkout D^0 && + git checkout D^0 && test_must_fail git merge -s recursive E2^0 &&
@@ -516,10 +516,12 @@ test_expect_success 'merge of D & E2 fails but has appropriate contents' ' ' test_expect_success 'merge of E2 & D fails but has appropriate contents' ' + test_when_finished "git -C directory-file reset --hard" && + test_when_finished "git -C directory-file clean -fdqx" && ( cd directory-file && - get_clean_checkout E2^0 && + git checkout E2^0 && test_must_fail git merge -s recursive D^0 &&
Signature · 1 line
2.17.0.1.gda85003413