You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.1 KiB
97 lines
2.1 KiB
#!/bin/sh |
|
|
|
test_description='git am handling submodules' |
|
|
|
. ./test-lib.sh |
|
. "$TEST_DIRECTORY"/lib-submodule-update.sh |
|
|
|
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" >patch && |
|
may_only_be_test_must_fail "$2" && |
|
$2 git am --3way patch |
|
} |
|
|
|
KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1 |
|
test_submodule_switch_func "am_3way" |
|
|
|
test_expect_success 'setup diff.submodule' ' |
|
test_commit one && |
|
INITIAL=$(git rev-parse HEAD) && |
|
|
|
git init submodule && |
|
( |
|
cd submodule && |
|
test_commit two && |
|
git rev-parse HEAD >../initial-submodule |
|
) && |
|
git submodule add ./submodule && |
|
git commit -m first && |
|
|
|
( |
|
cd submodule && |
|
test_commit three && |
|
git rev-parse HEAD >../first-submodule |
|
) && |
|
git add submodule && |
|
git commit -m second && |
|
SECOND=$(git rev-parse HEAD) && |
|
|
|
( |
|
cd submodule && |
|
git mv two.t four.t && |
|
git commit -m "second submodule" && |
|
git rev-parse HEAD >../second-submodule |
|
) && |
|
test_commit four && |
|
git add submodule && |
|
git commit --amend --no-edit && |
|
THIRD=$(git rev-parse HEAD) && |
|
git submodule update --init |
|
' |
|
|
|
run_test() { |
|
START_COMMIT=$1 && |
|
EXPECT=$2 && |
|
# Abort any merges in progress: the previous |
|
# test may have failed, and we should clean up. |
|
test_might_fail git am --abort && |
|
git reset --hard $START_COMMIT && |
|
rm -f *.patch && |
|
git format-patch -1 && |
|
git reset --hard $START_COMMIT^ && |
|
git submodule update && |
|
git am *.patch && |
|
git submodule update && |
|
git -C submodule rev-parse HEAD >actual && |
|
test_cmp $EXPECT actual |
|
} |
|
|
|
test_expect_success 'diff.submodule unset' ' |
|
test_unconfig diff.submodule && |
|
run_test $SECOND first-submodule |
|
' |
|
|
|
test_expect_success 'diff.submodule unset with extra file' ' |
|
test_unconfig diff.submodule && |
|
run_test $THIRD second-submodule |
|
' |
|
|
|
test_expect_success 'diff.submodule=log' ' |
|
test_config diff.submodule log && |
|
run_test $SECOND first-submodule |
|
' |
|
|
|
test_expect_success 'diff.submodule=log with extra file' ' |
|
test_config diff.submodule log && |
|
run_test $THIRD second-submodule |
|
' |
|
|
|
test_done
|
|
|