t/: new helper for tests that pass with ort but fail with recursive

There are a number of tests that the "recursive" backend does not handle
correctly but which the redesign in "ort" will.  Add a new helper in
lib-merge.sh for selecting a different test expectation based on the
setting of GIT_TEST_MERGE_ALGORITHM, and use it in various testcases to
document which ones we expect to fail under recursive but pass under
ort.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Elijah Newren 2020-10-26 17:01:36 +00:00 committed by Junio C Hamano
parent c64432aacd
commit f06481f127
6 changed files with 34 additions and 16 deletions

13
t/lib-merge.sh Normal file
View File

@ -0,0 +1,13 @@
# Helper functions used by merge tests.

test_expect_merge_algorithm () {
status_for_recursive=$1 status_for_ort=$2
shift 2

if test "$GIT_TEST_MERGE_ALGORITHM" = ort
then
test_expect_${status_for_ort} "$@"
else
test_expect_${status_for_recursive} "$@"
fi
}

View File

@ -3,6 +3,7 @@
test_description='recursive merge corner cases involving criss-cross merges' test_description='recursive merge corner cases involving criss-cross merges'


. ./test-lib.sh . ./test-lib.sh
. "$TEST_DIRECTORY"/lib-merge.sh


# #
# L1 L2 # L1 L2
@ -1069,7 +1070,7 @@ test_expect_success 'setup symlink modify/modify' '
) )
' '


test_expect_failure 'check symlink modify/modify' ' test_expect_merge_algorithm failure success 'check symlink modify/modify' '
( (
cd symlink-modify-modify && cd symlink-modify-modify &&


@ -1135,7 +1136,7 @@ test_expect_success 'setup symlink add/add' '
) )
' '


test_expect_failure 'check symlink add/add' ' test_expect_merge_algorithm failure success 'check symlink add/add' '
( (
cd symlink-add-add && cd symlink-add-add &&


@ -1223,7 +1224,7 @@ test_expect_success 'setup submodule modify/modify' '
) )
' '


test_expect_failure 'check submodule modify/modify' ' test_expect_merge_algorithm failure success 'check submodule modify/modify' '
( (
cd submodule-modify-modify && cd submodule-modify-modify &&


@ -1311,7 +1312,7 @@ test_expect_success 'setup submodule add/add' '
) )
' '


test_expect_failure 'check submodule add/add' ' test_expect_merge_algorithm failure success 'check submodule add/add' '
( (
cd submodule-add-add && cd submodule-add-add &&


@ -1386,7 +1387,7 @@ test_expect_success 'setup conflicting entry types (submodule vs symlink)' '
) )
' '


test_expect_failure 'check conflicting entry types (submodule vs symlink)' ' test_expect_merge_algorithm failure success 'check conflicting entry types (submodule vs symlink)' '
( (
cd submodule-symlink-add-add && cd submodule-symlink-add-add &&



View File

@ -4,6 +4,7 @@ test_description="recursive merge corner cases w/ renames but not criss-crosses"
# t6036 has corner cases that involve both criss-cross merges and renames # t6036 has corner cases that involve both criss-cross merges and renames


. ./test-lib.sh . ./test-lib.sh
. "$TEST_DIRECTORY"/lib-merge.sh


test_setup_rename_delete_untracked () { test_setup_rename_delete_untracked () {
test_create_repo rename-delete-untracked && test_create_repo rename-delete-untracked &&
@ -878,7 +879,7 @@ test_setup_rad () {
) )
} }


test_expect_failure 'rad-check: rename/add/delete conflict' ' test_expect_merge_algorithm failure success 'rad-check: rename/add/delete conflict' '
test_setup_rad && test_setup_rad &&
( (
cd rad && cd rad &&
@ -951,7 +952,7 @@ test_setup_rrdd () {
) )
} }


test_expect_failure 'rrdd-check: rename/rename(2to1)/delete/delete conflict' ' test_expect_merge_algorithm failure success 'rrdd-check: rename/rename(2to1)/delete/delete conflict' '
test_setup_rrdd && test_setup_rrdd &&
( (
cd rrdd && cd rrdd &&
@ -1040,7 +1041,7 @@ test_setup_mod6 () {
) )
} }


test_expect_failure 'mod6-check: chains of rename/rename(1to2) and rename/rename(2to1)' ' test_expect_merge_algorithm failure success 'mod6-check: chains of rename/rename(1to2) and rename/rename(2to1)' '
test_setup_mod6 && test_setup_mod6 &&
( (
cd mod6 && cd mod6 &&

View File

@ -26,6 +26,7 @@ test_description="recursive merge with directory renames"
# files that might be renamed into each other's paths.) # files that might be renamed into each other's paths.)


. ./test-lib.sh . ./test-lib.sh
. "$TEST_DIRECTORY"/lib-merge.sh




########################################################################### ###########################################################################
@ -1339,7 +1340,7 @@ test_setup_6b1 () {
) )
} }


test_expect_failure '6b1: Same renames done on both sides, plus another rename' ' test_expect_merge_algorithm failure success '6b1: Same renames done on both sides, plus another rename' '
test_setup_6b1 && test_setup_6b1 &&
( (
cd 6b1 && cd 6b1 &&
@ -1412,7 +1413,7 @@ test_setup_6b2 () {
) )
} }


test_expect_failure '6b2: Same rename done on both sides' ' test_expect_merge_algorithm failure success '6b2: Same rename done on both sides' '
test_setup_6b2 && test_setup_6b2 &&
( (
cd 6b2 && cd 6b2 &&
@ -3471,7 +3472,7 @@ test_setup_10e () {
) )
} }


test_expect_failure '10e: Does git complain about untracked file that is not really in the way?' ' test_expect_merge_algorithm failure success '10e: Does git complain about untracked file that is not really in the way?' '
test_setup_10e && test_setup_10e &&
( (
cd 10e && cd 10e &&
@ -4104,7 +4105,7 @@ test_setup_12b1 () {
) )
} }


test_expect_failure '12b1: Moving two directory hierarchies into each other' ' test_expect_merge_algorithm failure success '12b1: Moving two directory hierarchies into each other' '
test_setup_12b1 && test_setup_12b1 &&
( (
cd 12b1 && cd 12b1 &&
@ -4272,7 +4273,7 @@ test_setup_12c1 () {
) )
} }


test_expect_failure '12c1: Moving one directory hierarchy into another w/ content merge' ' test_expect_merge_algorithm failure success '12c1: Moving one directory hierarchy into another w/ content merge' '
test_setup_12c1 && test_setup_12c1 &&
( (
cd 12c1 && cd 12c1 &&
@ -4632,7 +4633,7 @@ test_setup_12f () {
) )
} }


test_expect_failure '12f: Trivial directory resolve, caching, all kinds of fun' ' test_expect_merge_algorithm failure success '12f: Trivial directory resolve, caching, all kinds of fun' '
test_setup_12f && test_setup_12f &&
( (
cd 12f && cd 12f &&

View File

@ -23,6 +23,7 @@ test_description="merge cases"
# files that might be renamed into each other's paths.) # files that might be renamed into each other's paths.)


. ./test-lib.sh . ./test-lib.sh
. "$TEST_DIRECTORY"/lib-merge.sh




########################################################################### ###########################################################################
@ -666,7 +667,7 @@ test_setup_4a () {
# correct requires doing the merge in-memory first, then realizing that no # correct requires doing the merge in-memory first, then realizing that no
# updates to the file are necessary, and thus that we can just leave the path # updates to the file are necessary, and thus that we can just leave the path
# alone. # alone.
test_expect_failure '4a: Change on A, change on B subset of A, dirty mods present' ' test_expect_merge_algorithm failure success '4a: Change on A, change on B subset of A, dirty mods present' '
test_setup_4a && test_setup_4a &&
( (
cd 4a && cd 4a &&

View File

@ -3,6 +3,7 @@
test_description='merge-recursive backend test' test_description='merge-recursive backend test'


. ./test-lib.sh . ./test-lib.sh
. "$TEST_DIRECTORY"/lib-merge.sh


test_expect_success 'setup 1' ' test_expect_success 'setup 1' '


@ -641,7 +642,7 @@ test_expect_success 'merge-recursive copy vs. rename' '
test_cmp expected actual test_cmp expected actual
' '


test_expect_failure 'merge-recursive rename vs. rename/symlink' ' test_expect_merge_algorithm failure success 'merge-recursive rename vs. rename/symlink' '


git checkout -f rename && git checkout -f rename &&
git merge rename-ln && git merge rename-ln &&