X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=t%2Ft3508-cherry-pick-many-commits.sh;h=8e09fd0319c95cbd4d30c461f00fee5f52e27cbd;hb=6cf5b81f3236ddc3be9967dc59dc948efbfbbeea;hp=3b87efe3adffc025275ff5ad5ee4cd8251a39522;hpb=8c7da8690d2dfc84c9f827796bc730d900b5fba7;p=git.git diff --git a/t/t3508-cherry-pick-many-commits.sh b/t/t3508-cherry-pick-many-commits.sh index 3b87efe3a..8e09fd031 100755 --- a/t/t3508-cherry-pick-many-commits.sh +++ b/t/t3508-cherry-pick-many-commits.sh @@ -4,6 +4,18 @@ test_description='test cherry-picking many commits' . ./test-lib.sh +check_head_differs_from() { + head=$(git rev-parse --verify HEAD) && + arg=$(git rev-parse --verify "$1") && + test "$head" != "$arg" +} + +check_head_equals() { + head=$(git rev-parse --verify HEAD) && + arg=$(git rev-parse --verify "$1") && + test "$head" = "$arg" +} + test_expect_success setup ' echo first > file1 && git add file1 && @@ -23,27 +35,69 @@ test_expect_success setup ' ' test_expect_success 'cherry-pick first..fourth works' ' - git checkout master && + cat <<-\EOF >expected && + [master OBJID] second + Author: A U Thor + 1 files changed, 1 insertions(+), 0 deletions(-) + [master OBJID] third + Author: A U Thor + 1 files changed, 1 insertions(+), 0 deletions(-) + [master OBJID] fourth + Author: A U Thor + 1 files changed, 1 insertions(+), 0 deletions(-) + EOF + + git checkout -f master && git reset --hard first && test_tick && - git cherry-pick first..fourth && + git cherry-pick first..fourth >actual && git diff --quiet other && git diff --quiet HEAD other && - test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify fourth)" + + sed -e "s/$_x05[0-9a-f][0-9a-f]/OBJID/" actual.fuzzy && + test_cmp expected actual.fuzzy && + check_head_differs_from fourth +' + +test_expect_success 'cherry-pick --strategy resolve first..fourth works' ' + cat <<-\EOF >expected && + Trying simple merge. + [master OBJID] second + Author: A U Thor + 1 files changed, 1 insertions(+), 0 deletions(-) + Trying simple merge. + [master OBJID] third + Author: A U Thor + 1 files changed, 1 insertions(+), 0 deletions(-) + Trying simple merge. + [master OBJID] fourth + Author: A U Thor + 1 files changed, 1 insertions(+), 0 deletions(-) + EOF + + git checkout -f master && + git reset --hard first && + test_tick && + git cherry-pick --strategy resolve first..fourth >actual && + git diff --quiet other && + git diff --quiet HEAD other && + sed -e "s/$_x05[0-9a-f][0-9a-f]/OBJID/" actual.fuzzy && + test_cmp expected actual.fuzzy && + check_head_differs_from fourth ' test_expect_success 'cherry-pick --ff first..fourth works' ' - git checkout master && + git checkout -f master && git reset --hard first && test_tick && git cherry-pick --ff first..fourth && git diff --quiet other && git diff --quiet HEAD other && - test "$(git rev-parse --verify HEAD)" = "$(git rev-parse --verify fourth)" + check_head_equals fourth ' test_expect_success 'cherry-pick -n first..fourth works' ' - git checkout master && + git checkout -f master && git reset --hard first && test_tick && git cherry-pick -n first..fourth && @@ -53,7 +107,7 @@ test_expect_success 'cherry-pick -n first..fourth works' ' ' test_expect_success 'revert first..fourth works' ' - git checkout master && + git checkout -f master && git reset --hard fourth && test_tick && git revert first..fourth && @@ -63,7 +117,7 @@ test_expect_success 'revert first..fourth works' ' ' test_expect_success 'revert ^first fourth works' ' - git checkout master && + git checkout -f master && git reset --hard fourth && test_tick && git revert ^first fourth && @@ -73,7 +127,7 @@ test_expect_success 'revert ^first fourth works' ' ' test_expect_success 'revert fourth fourth~1 fourth~2 works' ' - git checkout master && + git checkout -f master && git reset --hard fourth && test_tick && git revert fourth fourth~1 fourth~2 && @@ -82,14 +136,24 @@ test_expect_success 'revert fourth fourth~1 fourth~2 works' ' git diff --quiet HEAD first ' -test_expect_failure 'cherry-pick -3 fourth works' ' - git checkout master && +test_expect_success 'cherry-pick -3 fourth works' ' + git checkout -f master && git reset --hard first && test_tick && git cherry-pick -3 fourth && git diff --quiet other && git diff --quiet HEAD other && - test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify fourth)" + check_head_differs_from fourth +' + +test_expect_success 'cherry-pick --stdin works' ' + git checkout -f master && + git reset --hard first && + test_tick && + git rev-list --reverse first..fourth | git cherry-pick --stdin && + git diff --quiet other && + git diff --quiet HEAD other && + check_head_differs_from fourth ' test_done