From 27691ca27e0be0195e30450cc0316c2cc090dfca Mon Sep 17 00:00:00 2001 From: Denton Liu Date: Wed, 29 Apr 2020 08:22:23 -0400 Subject: [PATCH 1/4] lib-submodule-update: add space after function name In the shell scripts in this codebase, the usual style is to include a space between the function name and the (). Add these missing spaces to conform to the usual style of the code. Signed-off-by: Denton Liu Signed-off-by: Junio C Hamano --- t/lib-submodule-update.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index 1dd17fc03e..122554acd6 100755 --- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh @@ -183,7 +183,7 @@ test_git_directory_is_unchanged () { ) } -test_git_directory_exists() { +test_git_directory_exists () { test -e ".git/modules/$1" && if test -f sub1/.git then @@ -309,7 +309,7 @@ test_submodule_content () { # Internal function; use test_submodule_switch() or # test_submodule_forced_switch() instead. -test_submodule_switch_common() { +test_submodule_switch_common () { command="$1" ######################### Appearing submodule ######################### # Switching to a commit letting a submodule appear creates empty dir ... @@ -629,7 +629,7 @@ test_submodule_forced_switch () { # Internal function; use test_submodule_switch_recursing_with_args() or # test_submodule_forced_switch_recursing_with_args() instead. -test_submodule_recursing_with_args_common() { +test_submodule_recursing_with_args_common () { command="$1" ######################### Appearing submodule ######################### From add245234820be6cec3f54174d44f738aa1a80f9 Mon Sep 17 00:00:00 2001 From: Denton Liu Date: Wed, 29 Apr 2020 08:22:24 -0400 Subject: [PATCH 2/4] lib-submodule-update: consolidate --recurse-submodules Both test_submodule_switch_recursing_with_args() and test_submodule_forced_switch_recursing_with_args() call the internal function test_submodule_recursing_with_args_common() with the final argument of `--recurse-submodules`. Consolidate this duplication by appending the argument in test_submodule_recursing_with_args_common(). Signed-off-by: Denton Liu Signed-off-by: Junio C Hamano --- t/lib-submodule-update.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index 122554acd6..bb36287803 100755 --- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh @@ -630,7 +630,7 @@ test_submodule_forced_switch () { # Internal function; use test_submodule_switch_recursing_with_args() or # test_submodule_forced_switch_recursing_with_args() instead. test_submodule_recursing_with_args_common () { - command="$1" + command="$1 --recurse-submodules" ######################### Appearing submodule ######################### # Switching to a commit letting a submodule appear checks it out ... @@ -809,7 +809,7 @@ test_submodule_recursing_with_args_common () { # test_submodule_switch_recursing_with_args "$GIT_COMMAND" test_submodule_switch_recursing_with_args () { cmd_args="$1" - command="git $cmd_args --recurse-submodules" + command="git $cmd_args" test_submodule_recursing_with_args_common "$command" RESULTDS=success @@ -927,7 +927,7 @@ test_submodule_switch_recursing_with_args () { # away local changes in the superproject is allowed. test_submodule_forced_switch_recursing_with_args () { cmd_args="$1" - command="git $cmd_args --recurse-submodules" + command="git $cmd_args" test_submodule_recursing_with_args_common "$command" RESULT=success From aa06180ac90984204e59ac74bb4e3a4d09037ac2 Mon Sep 17 00:00:00 2001 From: Denton Liu Date: Thu, 11 Jun 2020 13:41:49 -0400 Subject: [PATCH 3/4] lib-submodule-update: prepend "git" to $command Since all invocations of test_submodule_forced_switch() are git commands, automatically prepend "git" before invoking test_submodule_switch_common(). Similarly, many invocations of test_submodule_switch() are also git commands so automatically prepend "git" before invoking test_submodule_switch_common() as well. Finally, for invocations of test_submodule_switch() that invoke a custom function, rename the old function to test_submodule_switch_func(). This is necessary because in a future commit, we will be adding some logic that needs to distinguish between an invocation of a plain git comamnd and an invocation of a test helper function. Signed-off-by: Denton Liu Signed-off-by: Junio C Hamano --- t/lib-submodule-update.sh | 14 +++++++++----- t/t1013-read-tree-submodule.sh | 4 ++-- t/t2013-checkout-submodule.sh | 4 ++-- t/t3426-rebase-submodule.sh | 4 ++-- t/t3512-cherry-pick-submodule.sh | 2 +- t/t3513-revert-submodule.sh | 2 +- t/t3906-stash-submodule.sh | 2 +- t/t4137-apply-submodule.sh | 4 ++-- t/t4255-am-submodule.sh | 4 ++-- t/t5572-pull-submodule.sh | 8 ++++---- t/t6041-bisect-submodule.sh | 2 +- t/t7112-reset-submodule.sh | 6 +++--- t/t7613-merge-submodule.sh | 8 ++++---- 13 files changed, 34 insertions(+), 30 deletions(-) diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index bb36287803..7c3ba1be00 100755 --- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh @@ -307,8 +307,8 @@ test_submodule_content () { # to protect the history! # -# Internal function; use test_submodule_switch() or -# test_submodule_forced_switch() instead. +# Internal function; use test_submodule_switch_func(), test_submodule_switch(), +# or test_submodule_forced_switch() instead. test_submodule_switch_common () { command="$1" ######################### Appearing submodule ######################### @@ -566,8 +566,8 @@ test_submodule_switch_common () { # # Do something here that updates the worktree and index to match target, # # but not any submodule directories. # } -# test_submodule_switch "my_func" -test_submodule_switch () { +# test_submodule_switch_func "my_func" +test_submodule_switch_func () { command="$1" test_submodule_switch_common "$command" @@ -587,12 +587,16 @@ test_submodule_switch () { ' } +test_submodule_switch () { + test_submodule_switch_func "git $1" +} + # Same as test_submodule_switch(), except that throwing away local changes in # the superproject is allowed. test_submodule_forced_switch () { command="$1" KNOWN_FAILURE_FORCED_SWITCH_TESTS=1 - test_submodule_switch_common "$command" + test_submodule_switch_common "git $command" # When forced, a file in the superproject does not prevent creating a # submodule of the same name. diff --git a/t/t1013-read-tree-submodule.sh b/t/t1013-read-tree-submodule.sh index 91a6fafcb4..b6df7444c0 100755 --- a/t/t1013-read-tree-submodule.sh +++ b/t/t1013-read-tree-submodule.sh @@ -12,8 +12,8 @@ test_submodule_switch_recursing_with_args "read-tree -u -m" test_submodule_forced_switch_recursing_with_args "read-tree -u --reset" -test_submodule_switch "git read-tree -u -m" +test_submodule_switch "read-tree -u -m" -test_submodule_forced_switch "git read-tree -u --reset" +test_submodule_forced_switch "read-tree -u --reset" test_done diff --git a/t/t2013-checkout-submodule.sh b/t/t2013-checkout-submodule.sh index 8f86b5f4b2..b2bdd1fcb4 100755 --- a/t/t2013-checkout-submodule.sh +++ b/t/t2013-checkout-submodule.sh @@ -68,8 +68,8 @@ test_submodule_switch_recursing_with_args "checkout" test_submodule_forced_switch_recursing_with_args "checkout -f" -test_submodule_switch "git checkout" +test_submodule_switch "checkout" -test_submodule_forced_switch "git checkout -f" +test_submodule_forced_switch "checkout -f" test_done diff --git a/t/t3426-rebase-submodule.sh b/t/t3426-rebase-submodule.sh index a2bba04ba9..788605ccc0 100755 --- a/t/t3426-rebase-submodule.sh +++ b/t/t3426-rebase-submodule.sh @@ -20,7 +20,7 @@ git_rebase () { git rebase "$1" } -test_submodule_switch "git_rebase" +test_submodule_switch_func "git_rebase" git_rebase_interactive () { git status -su >expect && @@ -38,7 +38,7 @@ git_rebase_interactive () { git rebase -i "$1" } -test_submodule_switch "git_rebase_interactive" +test_submodule_switch_func "git_rebase_interactive" test_expect_success 'rebase interactive ignores modified submodules' ' test_when_finished "rm -rf super sub" && diff --git a/t/t3512-cherry-pick-submodule.sh b/t/t3512-cherry-pick-submodule.sh index bd78287841..6ece1d8573 100755 --- a/t/t3512-cherry-pick-submodule.sh +++ b/t/t3512-cherry-pick-submodule.sh @@ -7,7 +7,7 @@ test_description='cherry-pick can handle submodules' KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 -test_submodule_switch "git cherry-pick" +test_submodule_switch "cherry-pick" test_expect_success 'unrelated submodule/file conflict is ignored' ' test_create_repo sub && diff --git a/t/t3513-revert-submodule.sh b/t/t3513-revert-submodule.sh index 5e39fcdb66..95a7f64471 100755 --- a/t/t3513-revert-submodule.sh +++ b/t/t3513-revert-submodule.sh @@ -26,6 +26,6 @@ git_revert () { } KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 -test_submodule_switch "git_revert" +test_submodule_switch_func "git_revert" test_done diff --git a/t/t3906-stash-submodule.sh b/t/t3906-stash-submodule.sh index b93d1d74da..6a7e801ca0 100755 --- a/t/t3906-stash-submodule.sh +++ b/t/t3906-stash-submodule.sh @@ -19,7 +19,7 @@ git_stash () { KNOWN_FAILURE_STASH_DOES_IGNORE_SUBMODULE_CHANGES=1 KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1 KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 -test_submodule_switch "git_stash" +test_submodule_switch_func "git_stash" setup_basic () { test_when_finished "rm -rf main sub" && diff --git a/t/t4137-apply-submodule.sh b/t/t4137-apply-submodule.sh index a9bd40a6d0..b645e303a0 100755 --- a/t/t4137-apply-submodule.sh +++ b/t/t4137-apply-submodule.sh @@ -9,12 +9,12 @@ apply_index () { git diff --ignore-submodules=dirty "..$1" | git apply --index - } -test_submodule_switch "apply_index" +test_submodule_switch_func "apply_index" apply_3way () { git diff --ignore-submodules=dirty "..$1" | git apply --3way - } -test_submodule_switch "apply_3way" +test_submodule_switch_func "apply_3way" test_done diff --git a/t/t4255-am-submodule.sh b/t/t4255-am-submodule.sh index 0ba8194403..1b179d5f45 100755 --- a/t/t4255-am-submodule.sh +++ b/t/t4255-am-submodule.sh @@ -9,14 +9,14 @@ am () { git format-patch --stdout --ignore-submodules=dirty "..$1" | git am - } -test_submodule_switch "am" +test_submodule_switch_func "am" am_3way () { git format-patch --stdout --ignore-submodules=dirty "..$1" | git am --3way - } KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 -test_submodule_switch "am_3way" +test_submodule_switch_func "am_3way" test_expect_success 'setup diff.submodule' ' test_commit one && diff --git a/t/t5572-pull-submodule.sh b/t/t5572-pull-submodule.sh index f916729a12..f911bf631e 100755 --- a/t/t5572-pull-submodule.sh +++ b/t/t5572-pull-submodule.sh @@ -17,21 +17,21 @@ git_pull () { } # pulls without conflicts -test_submodule_switch "git_pull" +test_submodule_switch_func "git_pull" git_pull_ff () { reset_branch_to_HEAD "$1" && git pull --ff } -test_submodule_switch "git_pull_ff" +test_submodule_switch_func "git_pull_ff" git_pull_ff_only () { reset_branch_to_HEAD "$1" && git pull --ff-only } -test_submodule_switch "git_pull_ff_only" +test_submodule_switch_func "git_pull_ff_only" git_pull_noff () { reset_branch_to_HEAD "$1" && @@ -40,7 +40,7 @@ git_pull_noff () { KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 -test_submodule_switch "git_pull_noff" +test_submodule_switch_func "git_pull_noff" test_expect_success 'pull --recurse-submodule setup' ' test_create_repo child && diff --git a/t/t6041-bisect-submodule.sh b/t/t6041-bisect-submodule.sh index 62b8a2e7bb..0e0cdf638d 100755 --- a/t/t6041-bisect-submodule.sh +++ b/t/t6041-bisect-submodule.sh @@ -27,6 +27,6 @@ git_bisect () { git bisect bad $BAD } -test_submodule_switch "git_bisect" +test_submodule_switch_func "git_bisect" test_done diff --git a/t/t7112-reset-submodule.sh b/t/t7112-reset-submodule.sh index a1cb9ff858..8741b665c9 100755 --- a/t/t7112-reset-submodule.sh +++ b/t/t7112-reset-submodule.sh @@ -13,10 +13,10 @@ test_submodule_switch_recursing_with_args "reset --keep" test_submodule_forced_switch_recursing_with_args "reset --hard" -test_submodule_switch "git reset --keep" +test_submodule_switch "reset --keep" -test_submodule_switch "git reset --merge" +test_submodule_switch "reset --merge" -test_submodule_forced_switch "git reset --hard" +test_submodule_forced_switch "reset --hard" test_done diff --git a/t/t7613-merge-submodule.sh b/t/t7613-merge-submodule.sh index d1e9fcc781..04bf4be7d7 100755 --- a/t/t7613-merge-submodule.sh +++ b/t/t7613-merge-submodule.sh @@ -6,14 +6,14 @@ test_description='merge can handle submodules' . "$TEST_DIRECTORY"/lib-submodule-update.sh # merges without conflicts -test_submodule_switch "git merge" +test_submodule_switch "merge" -test_submodule_switch "git merge --ff" +test_submodule_switch "merge --ff" -test_submodule_switch "git merge --ff-only" +test_submodule_switch "merge --ff-only" KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 -test_submodule_switch "git merge --no-ff" +test_submodule_switch "merge --no-ff" test_done From 5b0ac09fb17656553d85c7e3fbe0583ba3023e5e Mon Sep 17 00:00:00 2001 From: Denton Liu Date: Wed, 24 Jun 2020 04:50:18 -0400 Subject: [PATCH 4/4] lib-submodule-update: pass 'test_must_fail' as an argument When we run a test helper function in test_submodule_switch_common(), we sometimes specify a whole helper function as the $command. When we do this, in some test cases, we just mark the whole function with `test_must_fail`. However, it's possible that the helper function might fail earlier or later than expected due to an introduced bug. If this happens, then the test case will still report as passing but it should really be marked as failing since it didn't actually display the intended behaviour. Instead of invoking `test_must_fail $command`, pass the string "test_must_fail" as the second argument in case where the git command is expected to fail. When $command is a helper function, the parent function calling test_submodule_switch_common() is test_submodule_switch_func(). For all test_submodule_switch_func() invocations, increase the granularity of the argument test helper function by prefixing the git invocation which is meant to fail with the second argument like this: $2 git checkout "$1" In the other cases, test_submodule_switch() and test_submodule_forced_switch(), instead of passing in the git command directly, wrap it using the git_test_func() and pass the git arguments using the global variable $gitcmd. Unfortunately, since closures aren't a thing in shell scripts, the global variable is necessary. Another unfortunate result is that the "git_test_func" will used as the test case name when $command is printed but it's worth it for the cleaner code. Finally, as an added bonus, `test_must_fail` will now only run on git commands. Signed-off-by: Denton Liu Signed-off-by: Junio C Hamano --- t/lib-submodule-update.sh | 55 ++++++++++++++++++++++++++++--------- t/t3426-rebase-submodule.sh | 6 ++-- t/t3513-revert-submodule.sh | 7 ++++- t/t3906-stash-submodule.sh | 7 ++++- t/t4137-apply-submodule.sh | 8 ++++-- t/t4255-am-submodule.sh | 8 ++++-- t/t5572-pull-submodule.sh | 12 +++++--- t/t6041-bisect-submodule.sh | 7 ++++- 8 files changed, 84 insertions(+), 26 deletions(-) diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index 7c3ba1be00..8e9f310bcb 100755 --- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh @@ -303,8 +303,12 @@ test_submodule_content () { # update" is run. And even then that command doesn't delete the work tree of # a removed submodule. # +# The first argument of the callback function will be the name of the submodule. +# # Removing a submodule containing a .git directory must fail even when forced -# to protect the history! +# to protect the history! If we are testing this case, the second argument of +# the callback function will be 'test_must_fail', else it will be the empty +# string. # # Internal function; use test_submodule_switch_func(), test_submodule_switch(), @@ -443,7 +447,7 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory && - test_must_fail $command replace_sub1_with_directory && + $command replace_sub1_with_directory test_must_fail && test_superproject_content origin/add_sub1 && test_submodule_content sub1 origin/add_sub1 ) @@ -456,7 +460,7 @@ test_submodule_switch_common () { cd submodule_update && git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory && replace_gitfile_with_git_dir sub1 && - test_must_fail $command replace_sub1_with_directory && + $command replace_sub1_with_directory test_must_fail && test_superproject_content origin/add_sub1 && test_git_directory_is_unchanged sub1 && test_submodule_content sub1 origin/add_sub1 @@ -470,7 +474,7 @@ test_submodule_switch_common () { ( cd submodule_update && git branch -t replace_sub1_with_file origin/replace_sub1_with_file && - test_must_fail $command replace_sub1_with_file && + $command replace_sub1_with_file test_must_fail && test_superproject_content origin/add_sub1 && test_submodule_content sub1 origin/add_sub1 ) @@ -484,7 +488,7 @@ test_submodule_switch_common () { cd submodule_update && git branch -t replace_sub1_with_file origin/replace_sub1_with_file && replace_gitfile_with_git_dir sub1 && - test_must_fail $command replace_sub1_with_file && + $command replace_sub1_with_file test_must_fail && test_superproject_content origin/add_sub1 && test_git_directory_is_unchanged sub1 && test_submodule_content sub1 origin/add_sub1 @@ -559,12 +563,25 @@ test_submodule_switch_common () { # conditions, set the appropriate KNOWN_FAILURE_* variable used in the tests # below to 1. # -# Use as follows: +# The first argument of the callback function will be the name of the submodule. +# +# Removing a submodule containing a .git directory must fail even when forced +# to protect the history! If we are testing this case, the second argument of +# the callback function will be 'test_must_fail', else it will be the empty +# string. +# +# The following example uses `git some-command` as an example command to be +# tested. It updates the worktree and index to match a target, but not any +# submodule directories. # # my_func () { -# target=$1 -# # Do something here that updates the worktree and index to match target, -# # but not any submodule directories. +# ...prepare for `git some-command` to be run... +# $2 git some-command "$1" && +# if test -n "$2" +# then +# return +# fi && +# ...check the state after git some-command is run... # } # test_submodule_switch_func "my_func" test_submodule_switch_func () { @@ -580,23 +597,35 @@ test_submodule_switch_func () { cd submodule_update && git branch -t add_sub1 origin/add_sub1 && >sub1 && - test_must_fail $command add_sub1 && + $command add_sub1 test_must_fail && test_superproject_content origin/no_submodule && test_must_be_empty sub1 ) ' } +# Ensures that the that the arg either contains "test_must_fail" or is empty. +may_only_be_test_must_fail () { + test -z "$1" || test "$1" = test_must_fail || die +} + +git_test_func () { + may_only_be_test_must_fail "$2" && + $2 git $gitcmd "$1" +} + test_submodule_switch () { - test_submodule_switch_func "git $1" + gitcmd="$1" + test_submodule_switch_func "git_test_func" } # Same as test_submodule_switch(), except that throwing away local changes in # the superproject is allowed. test_submodule_forced_switch () { - command="$1" + gitcmd="$1" + command="git_test_func" KNOWN_FAILURE_FORCED_SWITCH_TESTS=1 - test_submodule_switch_common "git $command" + test_submodule_switch_common "$command" # When forced, a file in the superproject does not prevent creating a # submodule of the same name. diff --git a/t/t3426-rebase-submodule.sh b/t/t3426-rebase-submodule.sh index 788605ccc0..0ad3a07bf4 100755 --- a/t/t3426-rebase-submodule.sh +++ b/t/t3426-rebase-submodule.sh @@ -17,7 +17,8 @@ git_rebase () { git status -su >actual && ls -1pR * >>actual && test_cmp expect actual && - git rebase "$1" + may_only_be_test_must_fail "$2" && + $2 git rebase "$1" } test_submodule_switch_func "git_rebase" @@ -35,7 +36,8 @@ git_rebase_interactive () { test_cmp expect actual && set_fake_editor && echo "fake-editor.sh" >.git/info/exclude && - git rebase -i "$1" + may_only_be_test_must_fail "$2" && + $2 git rebase -i "$1" } test_submodule_switch_func "git_rebase_interactive" diff --git a/t/t3513-revert-submodule.sh b/t/t3513-revert-submodule.sh index 95a7f64471..a759f12cbb 100755 --- a/t/t3513-revert-submodule.sh +++ b/t/t3513-revert-submodule.sh @@ -15,7 +15,12 @@ git_revert () { git status -su >expect && ls -1pR * >>expect && tar cf "$TRASH_DIRECTORY/tmp.tar" * && - git checkout "$1" && + may_only_be_test_must_fail "$2" && + $2 git checkout "$1" && + if test -n "$2" + then + return + fi && git revert HEAD && rm -rf * && tar xf "$TRASH_DIRECTORY/tmp.tar" && diff --git a/t/t3906-stash-submodule.sh b/t/t3906-stash-submodule.sh index 6a7e801ca0..a52e53dd2d 100755 --- a/t/t3906-stash-submodule.sh +++ b/t/t3906-stash-submodule.sh @@ -8,7 +8,12 @@ test_description='stash can handle submodules' git_stash () { git status -su >expect && ls -1pR * >>expect && - git read-tree -u -m "$1" && + may_only_be_test_must_fail "$2" && + $2 git read-tree -u -m "$1" && + if test -n "$2" + then + return + fi && git stash && git status -su >actual && ls -1pR * >>actual && diff --git a/t/t4137-apply-submodule.sh b/t/t4137-apply-submodule.sh index b645e303a0..07d5262537 100755 --- a/t/t4137-apply-submodule.sh +++ b/t/t4137-apply-submodule.sh @@ -6,13 +6,17 @@ test_description='git apply handling submodules' . "$TEST_DIRECTORY"/lib-submodule-update.sh apply_index () { - git diff --ignore-submodules=dirty "..$1" | git apply --index - + git diff --ignore-submodules=dirty "..$1" >diff && + may_only_be_test_must_fail "$2" && + $2 git apply --index diff } test_submodule_switch_func "apply_index" apply_3way () { - git diff --ignore-submodules=dirty "..$1" | git apply --3way - + git diff --ignore-submodules=dirty "..$1" >diff && + may_only_be_test_must_fail "$2" && + $2 git apply --3way diff } test_submodule_switch_func "apply_3way" diff --git a/t/t4255-am-submodule.sh b/t/t4255-am-submodule.sh index 1b179d5f45..a7ba08f728 100755 --- a/t/t4255-am-submodule.sh +++ b/t/t4255-am-submodule.sh @@ -6,13 +6,17 @@ test_description='git am handling submodules' . "$TEST_DIRECTORY"/lib-submodule-update.sh am () { - git format-patch --stdout --ignore-submodules=dirty "..$1" | git am - + git format-patch --stdout --ignore-submodules=dirty "..$1" >patch && + may_only_be_test_must_fail "$2" && + $2 git am patch } test_submodule_switch_func "am" am_3way () { - git format-patch --stdout --ignore-submodules=dirty "..$1" | git am --3way - + git format-patch --stdout --ignore-submodules=dirty "..$1" >patch && + may_only_be_test_must_fail "$2" && + $2 git am --3way patch } KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 diff --git a/t/t5572-pull-submodule.sh b/t/t5572-pull-submodule.sh index f911bf631e..1d75e3b12b 100755 --- a/t/t5572-pull-submodule.sh +++ b/t/t5572-pull-submodule.sh @@ -13,7 +13,8 @@ reset_branch_to_HEAD () { git_pull () { reset_branch_to_HEAD "$1" && - git pull + may_only_be_test_must_fail "$2" && + $2 git pull } # pulls without conflicts @@ -21,21 +22,24 @@ test_submodule_switch_func "git_pull" git_pull_ff () { reset_branch_to_HEAD "$1" && - git pull --ff + may_only_be_test_must_fail "$2" && + $2 git pull --ff } test_submodule_switch_func "git_pull_ff" git_pull_ff_only () { reset_branch_to_HEAD "$1" && - git pull --ff-only + may_only_be_test_must_fail "$2" && + $2 git pull --ff-only } test_submodule_switch_func "git_pull_ff_only" git_pull_noff () { reset_branch_to_HEAD "$1" && - git pull --no-ff + may_only_be_test_must_fail "$2" && + $2 git pull --no-ff } KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 diff --git a/t/t6041-bisect-submodule.sh b/t/t6041-bisect-submodule.sh index 0e0cdf638d..df1eff0fb8 100755 --- a/t/t6041-bisect-submodule.sh +++ b/t/t6041-bisect-submodule.sh @@ -10,7 +10,12 @@ git_bisect () { ls -1pR * >>expect && tar cf "$TRASH_DIRECTORY/tmp.tar" * && GOOD=$(git rev-parse --verify HEAD) && - git checkout "$1" && + may_only_be_test_must_fail "$2" && + $2 git checkout "$1" && + if test -n "$2" + then + return + fi && echo "foo" >bar && git add bar && git commit -m "bisect bad" &&