Re: [PATCH v4] submodule merge: update conflict error message
From: Elijah Newren <hidden>
Date: 2022-07-17 02:44:42
On Fri, Jul 15, 2022 at 5:57 AM Johannes Schindelin [off-list ref] wrote:
Hi Calvin, On Tue, 12 Jul 2022, Calvin Wan wrote:quoted
diff --git a/t/t6437-submodule-merge.sh b/t/t6437-submodule-merge.sh index 178413c22f..cc1a312661 100755 --- a/t/t6437-submodule-merge.sh +++ b/t/t6437-submodule-merge.sh@@ -103,8 +103,25 @@ test_expect_success 'setup for merge search' ' echo "file-c" > file-c && git add file-c && git commit -m "sub-c") && - git commit -a -m "c" && + git commit -a -m "c") +' + +test_expect_success 'merging should conflict for non fast-forward' ' + (cd merge-search && + git checkout -b test-nonforward-a b && + if test "$GIT_TEST_MERGE_ALGORITHM" = ort + then + test_must_fail git merge c >actual + else + test_must_fail git merge c 2> actual + fi && + sub_expect="go to submodule (sub), and either merge commit $(git -C sub rev-parse --short sub-c)" && + grep "$sub_expect" actual &&No matter how hard I tried to stare at the code, no matter whether I looked at `cw/submodule-merge-messages` or `seen`, I cannot see how this `grep` could ever succeed when `GIT_TEST_MERGE_ALGORITHM=recursive`: only the `ort` code has been taught this new trick.
Right, that's left over from an earlier version of the patch (which did also modify merge-recursive).
quoted hunk ↗ jump to hunk
In fact, when I run this locally with `GIT_TEST_MERGE_ALGORITHM=recursive`, it not only fails (as shown here: https://github.com/gitgitgadget/git/runs/7349612861?check_suite_focus=true#step:4:1833 and here: https://github.com/gitgitgadget/git/runs/7326925485?check_suite_focus=true#step:4:1820), it also leaves no error message in `actual`. So you probably want to move the `sub_expect` assignment and the `grep` into the `ort` clause of the conditional above. With this fixup, things seem to work over here: -- snip --diff --git a/t/t6437-submodule-merge.sh b/t/t6437-submodule-merge.sh index cc1a3126619..3892d0bf742 100755 --- a/t/t6437-submodule-merge.sh +++ b/t/t6437-submodule-merge.sh@@ -111,12 +111,12 @@ test_expect_success 'merging should conflict for non fast-forward' ' git checkout -b test-nonforward-a b && if test "$GIT_TEST_MERGE_ALGORITHM" = ort then - test_must_fail git merge c >actual + test_must_fail git merge c >actual && + sub_expect="go to submodule (sub), and either merge commit $(git -C sub rev-parse --short sub-c)" && + grep "$sub_expect" actual else test_must_fail git merge c 2> actual fi && - sub_expect="go to submodule (sub), and either merge commit $(git -C sub rev-parse --short sub-c)" && - grep "$sub_expect" actual && git reset --hard) '@@ -153,13 +153,13 @@ test_expect_success 'merging should conflict for non fast-forward (resolution ex git rev-parse sub-d > ../expect) && if test "$GIT_TEST_MERGE_ALGORITHM" = ort then - test_must_fail git merge c >actual + test_must_fail git merge c >actual && + sub_expect="go to submodule (sub), and either merge commit $(git -C sub rev-parse --short sub-c)" && + grep "$sub_expect" actual else test_must_fail git merge c 2> actual fi && grep $(cat expect) actual > /dev/null && - sub_expect="go to submodule (sub), and either merge commit $(git -C sub rev-parse --short sub-c)" && - grep "$sub_expect" actual && git reset --hard) '@@ -180,14 +180,14 @@ test_expect_success 'merging should fail for ambiguous common parent' ' ) && if test "$GIT_TEST_MERGE_ALGORITHM" = ort then - test_must_fail git merge c >actual + test_must_fail git merge c >actual && + sub_expect="go to submodule (sub), and either merge commit $(git -C sub rev-parse --short sub-c)" && + grep "$sub_expect" actual else test_must_fail git merge c 2> actual fi && grep $(cat expect1) actual > /dev/null && grep $(cat expect2) actual > /dev/null && - sub_expect="go to submodule (sub), and either merge commit $(git -C sub rev-parse --short sub-c)" && - grep "$sub_expect" actual && git reset --hard) '@@ -227,8 +227,11 @@ test_expect_success 'merging should fail for changes that are backwards' ' git checkout -b test-backward e && test_must_fail git merge f >actual && - sub_expect="go to submodule (sub), and either merge commit $(git -C sub rev-parse --short sub-d)" && - grep "$sub_expect" actual) + if test "$GIT_TEST_MERGE_ALGORITHM" = ort + then + sub_expect="go to submodule (sub), and either merge commit $(git -C sub rev-parse --short sub-d)" && + grep "$sub_expect" actual + fi) ' -- snap --
Yeah, this looks good, thanks.