Currently, apply does not respect the merge.conflictStyle setting. Demonstrate this by making the 'apply with --3way' test case generic and extending it to show that the configuration of merge.conflictStyle = diff3 causes a breakage. Change print_sanitized_diff() to also sanitize `|||||||` conflict markers. Signed-off-by: Denton Liu <liu.denton@xxxxxxxxx> --- t/t4108-apply-threeway.sh | 58 ++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/t/t4108-apply-threeway.sh b/t/t4108-apply-threeway.sh index 3615256492..84347fc178 100755 --- a/t/t4108-apply-threeway.sh +++ b/t/t4108-apply-threeway.sh @@ -8,7 +8,7 @@ print_sanitized_diff () { git diff HEAD >diff.raw && sed -e ' /^index /d - s/^\(+[<>][<>][<>][<>]*\) .*/\1/ + s/^\(+[<>|][<>|][<>|][<>|]*\) .*/\1/ ' diff.raw } @@ -46,28 +46,42 @@ test_expect_success 'apply without --3way' ' git diff-index --exit-code --cached HEAD ' -test_expect_success 'apply with --3way' ' - # Merging side should be similar to applying this patch - git diff ...side >P.diff && - - # The corresponding conflicted merge - git reset --hard && - git checkout master^0 && - test_must_fail git merge --no-commit side && - git ls-files -s >expect.ls && - print_sanitized_diff >expect.diff && - - # should fail to apply - git reset --hard && - git checkout master^0 && - test_must_fail git apply --index --3way P.diff && - git ls-files -s >actual.ls && - print_sanitized_diff >actual.diff && +test_apply_with_3way () { + status="$1" && + shift && + description="$1" && + shift && + preamble="$1" && + shift && + + test_expect_$status "apply with --3way ($description)" " + $preamble && + + # Merging side should be similar to applying this patch + git diff ...side >P.diff && + + # The corresponding conflicted merge + git reset --hard && + git checkout master^0 && + test_must_fail git merge --no-commit side && + git ls-files -s >expect.ls && + print_sanitized_diff >expect.diff && + + # should fail to apply + git reset --hard && + git checkout master^0 && + test_must_fail git apply --index --3way P.diff && + git ls-files -s >actual.ls && + print_sanitized_diff >actual.diff && + + # The result should resemble the corresponding merge + test_cmp expect.ls actual.ls && + test_cmp expect.diff actual.diff + " +} - # The result should resemble the corresponding merge - test_cmp expect.ls actual.ls && - test_cmp expect.diff actual.diff -' +test_apply_with_3way success default true +test_apply_with_3way failure 'merge.conflictStyle = diff3' 'test_config merge.conflictStyle diff3' test_expect_success 'apply with --3way with rerere enabled' ' test_config rerere.enabled true && -- 2.24.0.rc0.197.g0926ab8072