diff options
Diffstat (limited to 't/t7600-merge.sh')
-rwxr-xr-x | t/t7600-merge.sh | 166 |
1 files changed, 99 insertions, 67 deletions
diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh index 1d45f9a..e5ff073 100755 --- a/t/t7600-merge.sh +++ b/t/t7600-merge.sh @@ -14,9 +14,9 @@ Testing basic merge operations/option parsing. ! [c4] c4 ! [c5] c5 ! [c6] c6 - * [master] Merge commit 'c1' into master + * [main] Merge commit 'c1' -------- - - [master] Merge commit 'c1' into master + - [main] Merge commit 'c1' + * [c1] commit 1 + [c6] c6 + [c5] c5 @@ -26,6 +26,9 @@ Testing basic merge operations/option parsing. +++++++* [c0] commit 0 ' +GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main +export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME + . ./test-lib.sh . "$TEST_DIRECTORY"/lib-gpg.sh @@ -44,8 +47,8 @@ test_write_lines '1 X' 2 '3 X' 4 '5 X' 6 7 8 '9 X' >result.1-3-5-9 test_write_lines 1 2 3 4 5 6 7 8 '9 Z' >result.9z create_merge_msgs () { - echo "Merge tag 'c2' into master" >msg.1-5 && - echo "Merge tags 'c2' and 'c3' into master" >msg.1-5-9 && + echo "Merge tag 'c2'" >msg.1-5 && + echo "Merge tags 'c2' and 'c3'" >msg.1-5-9 && { echo "Squashed commit of the following:" && echo && @@ -102,7 +105,7 @@ verify_mergeheads () { test_write_lines "$@" >mergehead.expected && while read sha1 rest do - git rev-parse $sha1 + git rev-parse $sha1 || return 1 done <.git/MERGE_HEAD >mergehead.actual && test_cmp mergehead.expected mergehead.actual } @@ -119,6 +122,8 @@ test_expect_success 'setup' ' c0=$(git rev-parse HEAD) && cp file.1 file && git add file && + cp file.1 other && + git add other && test_tick && git commit -m "commit 1" && git tag c1 && @@ -170,7 +175,7 @@ test_expect_success 'merge -h with invalid index' ' >.git/index && test_expect_code 129 git merge -h 2>usage ) && - test_i18ngrep "[Uu]sage: git merge" broken/usage + test_grep "[Uu]sage: git merge" broken/usage ' test_expect_success 'reject non-strategy with a git-merge-foo name' ' @@ -203,13 +208,13 @@ test_expect_success 'merge c0 with c1 with --ff-only' ' test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'merge from unborn branch' ' - git checkout -f master && + git checkout -f main && test_might_fail git branch -D kid && echo "OBJID HEAD@{0}: initial pull" >reflog.expected && git checkout --orphan kid && - test_when_finished "git checkout -f master" && + test_when_finished "git checkout -f main" && git rm -fr . && test_tick && git merge --ff-only c1 && @@ -246,10 +251,19 @@ test_expect_success 'merge --squash c3 with c7' ' # file EOF git cat-file commit HEAD >raw && - sed -e '1,/^$/d' raw >actual && + sed -e "1,/^$/d" raw >actual && test_cmp expect actual ' +test_expect_success 'merge --squash --autostash conflict does not attempt to apply autostash' ' + git reset --hard c3 && + >unrelated && + git add unrelated && + test_must_fail git merge --squash c7 --autostash >out 2>err && + ! grep "Applying autostash resulted in conflicts." err && + grep "When finished, apply stashed changes with \`git stash pop\`" out +' + test_expect_success 'merge c3 with c7 with commit.cleanup = scissors' ' git config commit.cleanup scissors && git reset --hard c3 && @@ -258,7 +272,7 @@ test_expect_success 'merge c3 with c7 with commit.cleanup = scissors' ' git commit --no-edit -a && cat >expect <<-\EOF && - Merge tag '"'"'c7'"'"' into master + Merge tag '"'"'c7'"'"' # ------------------------ >8 ------------------------ # Do not modify or remove the line above. @@ -268,8 +282,8 @@ test_expect_success 'merge c3 with c7 with commit.cleanup = scissors' ' # file EOF git cat-file commit HEAD >raw && - sed -e '1,/^$/d' raw >actual && - test_i18ncmp expect actual + sed -e "1,/^$/d" raw >actual && + test_cmp expect actual ' test_expect_success 'merge c3 with c7 with --squash commit.cleanup = scissors' ' @@ -292,8 +306,8 @@ test_expect_success 'merge c3 with c7 with --squash commit.cleanup = scissors' ' # file EOF git cat-file commit HEAD >raw && - sed -e '1,/^$/d' raw >actual && - test_i18ncmp expect actual + sed -e "1,/^$/d" raw >actual && + test_cmp expect actual ' test_debug 'git log --graph --decorate --oneline --all' @@ -413,7 +427,7 @@ test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'merge c1 with c2 (no-commit in config)' ' git reset --hard c1 && - test_config branch.master.mergeoptions "--no-commit" && + test_config branch.main.mergeoptions "--no-commit" && git merge c2 && verify_merge file result.1-5 && verify_head $c1 && @@ -427,7 +441,7 @@ test_expect_success 'merge c1 with c2 (log in config)' ' git merge --log c2 && git show -s --pretty=tformat:%s%n%b >expect && - test_config branch.master.mergeoptions "--log" && + test_config branch.main.mergeoptions "--log" && git reset --hard c1 && git merge c2 && git show -s --pretty=tformat:%s%n%b >actual && @@ -440,7 +454,7 @@ test_expect_success 'merge c1 with c2 (log in config gets overridden)' ' git merge c2 && git show -s --pretty=tformat:%s%n%b >expect && - test_config branch.master.mergeoptions "--no-log" && + test_config branch.main.mergeoptions "--no-log" && test_config merge.log "true" && git reset --hard c1 && git merge c2 && @@ -451,7 +465,7 @@ test_expect_success 'merge c1 with c2 (log in config gets overridden)' ' test_expect_success 'merge c1 with c2 (squash in config)' ' git reset --hard c1 && - test_config branch.master.mergeoptions "--squash" && + test_config branch.main.mergeoptions "--squash" && git merge c2 && verify_merge file result.1-5 && verify_head $c1 && @@ -463,7 +477,7 @@ test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'override config option -n with --summary' ' git reset --hard c1 && - test_config branch.master.mergeoptions "-n" && + test_config branch.main.mergeoptions "-n" && test_tick && git merge --summary c2 >diffstat.txt && verify_merge file result.1-5 msg.1-5 && @@ -477,7 +491,7 @@ test_expect_success 'override config option -n with --summary' ' test_expect_success 'override config option -n with --stat' ' git reset --hard c1 && - test_config branch.master.mergeoptions "-n" && + test_config branch.main.mergeoptions "-n" && test_tick && git merge --stat c2 >diffstat.txt && verify_merge file result.1-5 msg.1-5 && @@ -493,7 +507,7 @@ test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'override config option --stat' ' git reset --hard c1 && - test_config branch.master.mergeoptions "--stat" && + test_config branch.main.mergeoptions "--stat" && test_tick && git merge -n c2 >diffstat.txt && verify_merge file result.1-5 msg.1-5 && @@ -509,7 +523,7 @@ test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'merge c1 with c2 (override --no-commit)' ' git reset --hard c1 && - test_config branch.master.mergeoptions "--no-commit" && + test_config branch.main.mergeoptions "--no-commit" && test_tick && git merge --commit c2 && verify_merge file result.1-5 msg.1-5 && @@ -520,7 +534,7 @@ test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'merge c1 with c2 (override --squash)' ' git reset --hard c1 && - test_config branch.master.mergeoptions "--squash" && + test_config branch.main.mergeoptions "--squash" && test_tick && git merge --no-squash c2 && verify_merge file result.1-5 msg.1-5 && @@ -549,9 +563,9 @@ test_expect_success 'merge c0 with c1 (merge.ff=false)' ' ' test_debug 'git log --graph --decorate --oneline --all' -test_expect_success 'combine branch.master.mergeoptions with merge.ff' ' +test_expect_success 'combine branch.main.mergeoptions with merge.ff' ' git reset --hard c0 && - test_config branch.master.mergeoptions "--ff" && + test_config branch.main.mergeoptions "--ff" && test_config merge.ff "false" && test_tick && git merge c1 && @@ -593,7 +607,7 @@ test_expect_success 'option --no-ff overrides merge.ff=only config' ' test_expect_success 'merge c0 with c1 (ff overrides no-ff)' ' git reset --hard c0 && - test_config branch.master.mergeoptions "--no-ff" && + test_config branch.main.mergeoptions "--no-ff" && git merge --ff c1 && verify_merge file result.1 && verify_head $c1 @@ -606,7 +620,7 @@ test_expect_success 'merge log message' ' test_must_be_empty msg.act && git reset --hard c0 && - test_config branch.master.mergeoptions "--no-ff" && + test_config branch.main.mergeoptions "--no-ff" && git merge --no-log c2 && git show -s --pretty=format:%b HEAD >msg.act && test_must_be_empty msg.act && @@ -625,41 +639,41 @@ test_expect_success 'merge log message' ' test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'merge c1 with c0, c2, c0, and c1' ' - git reset --hard c1 && - test_tick && - git merge c0 c2 c0 c1 && - verify_merge file result.1-5 && - verify_parents $c1 $c2 + git reset --hard c1 && + test_tick && + git merge c0 c2 c0 c1 && + verify_merge file result.1-5 && + verify_parents $c1 $c2 ' test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'merge c1 with c0, c2, c0, and c1' ' - git reset --hard c1 && - test_tick && - git merge c0 c2 c0 c1 && - verify_merge file result.1-5 && - verify_parents $c1 $c2 + git reset --hard c1 && + test_tick && + git merge c0 c2 c0 c1 && + verify_merge file result.1-5 && + verify_parents $c1 $c2 ' test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'merge c1 with c1 and c2' ' - git reset --hard c1 && - test_tick && - git merge c1 c2 && - verify_merge file result.1-5 && - verify_parents $c1 $c2 + git reset --hard c1 && + test_tick && + git merge c1 c2 && + verify_merge file result.1-5 && + verify_parents $c1 $c2 ' test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'merge fast-forward in a dirty tree' ' - git reset --hard c0 && - mv file file1 && - cat file1 >file && - rm -f file1 && - git merge c2 + git reset --hard c0 && + mv file file1 && + cat file1 >file && + rm -f file1 && + git merge c2 ' test_debug 'git log --graph --decorate --oneline --all' @@ -667,7 +681,7 @@ test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'in-index merge' ' git reset --hard c0 && git merge --no-ff -s resolve c1 >out && - test_i18ngrep "Wonderful." out && + test_grep "Wonderful." out && verify_parents $c0 $c1 ' @@ -683,7 +697,7 @@ test_expect_success 'merge with --autostash' ' git reset --hard c1 && git merge-file file file.orig file.9 && git merge --autostash c2 2>err && - test_i18ngrep "Applied autostash." err && + test_grep "Applied autostash." err && git show HEAD:file >merge-result && test_cmp result.1-5 merge-result && test_cmp result.1-5-9 file @@ -694,7 +708,7 @@ test_expect_success 'merge with merge.autoStash' ' git reset --hard c1 && git merge-file file file.orig file.9 && git merge c2 2>err && - test_i18ngrep "Applied autostash." err && + test_grep "Applied autostash." err && git show HEAD:file >merge-result && test_cmp result.1-5 merge-result && test_cmp result.1-5-9 file @@ -704,26 +718,44 @@ test_expect_success 'fast-forward merge with --autostash' ' git reset --hard c0 && git merge-file file file.orig file.5 && git merge --autostash c1 2>err && - test_i18ngrep "Applied autostash." err && + test_grep "Applied autostash." err && test_cmp result.1-5 file ' +test_expect_success 'failed fast-forward merge with --autostash' ' + git reset --hard c0 && + git merge-file file file.orig file.5 && + cp file.5 other && + test_when_finished "rm other" && + test_must_fail git merge --autostash c1 2>err && + test_grep "Applied autostash." err && + test_cmp file.5 file +' + test_expect_success 'octopus merge with --autostash' ' git reset --hard c1 && git merge-file file file.orig file.3 && git merge --autostash c2 c3 2>err && - test_i18ngrep "Applied autostash." err && + test_grep "Applied autostash." err && git show HEAD:file >merge-result && test_cmp result.1-5-9 merge-result && test_cmp result.1-3-5-9 file ' +test_expect_success 'failed merge (exit 2) with --autostash' ' + git reset --hard c1 && + git merge-file file file.orig file.5 && + test_must_fail git merge -s recursive --autostash c2 c3 2>err && + test_grep "Applied autostash." err && + test_cmp result.1-5 file +' + test_expect_success 'conflicted merge with --autostash, --abort restores stash' ' git reset --hard c3 && cp file.1 file && test_must_fail git merge --autostash c7 && git merge --abort 2>err && - test_i18ngrep "Applied autostash." err && + test_grep "Applied autostash." err && test_cmp file.1 file ' @@ -735,7 +767,7 @@ test_expect_success 'completed merge (git commit) with --no-commit and --autosta git stash show -p MERGE_AUTOSTASH >actual && test_cmp expect actual && git commit 2>err && - test_i18ngrep "Applied autostash." err && + test_grep "Applied autostash." err && git show HEAD:file >merge-result && test_cmp result.1-5 merge-result && test_cmp result.1-5-9 file @@ -749,7 +781,7 @@ test_expect_success 'completed merge (git merge --continue) with --no-commit and git stash show -p MERGE_AUTOSTASH >actual && test_cmp expect actual && git merge --continue 2>err && - test_i18ngrep "Applied autostash." err && + test_grep "Applied autostash." err && git show HEAD:file >merge-result && test_cmp result.1-5 merge-result && test_cmp result.1-5-9 file @@ -763,7 +795,7 @@ test_expect_success 'aborted merge (merge --abort) with --no-commit and --autost git stash show -p MERGE_AUTOSTASH >actual && test_cmp expect actual && git merge --abort 2>err && - test_i18ngrep "Applied autostash." err && + test_grep "Applied autostash." err && git diff >actual && test_cmp expect actual ' @@ -776,7 +808,7 @@ test_expect_success 'aborted merge (reset --hard) with --no-commit and --autosta git stash show -p MERGE_AUTOSTASH >actual && test_cmp expect actual && git reset --hard 2>err && - test_i18ngrep "Autostash exists; creating a new stash entry." err && + test_grep "Autostash exists; creating a new stash entry." err && git diff --exit-code ' @@ -789,7 +821,7 @@ test_expect_success 'quit merge with --no-commit and --autostash' ' test_cmp expect actual && git diff HEAD >expect && git merge --quit 2>err && - test_i18ngrep "Autostash exists; creating a new stash entry." err && + test_grep "Autostash exists; creating a new stash entry." err && git diff HEAD >actual && test_cmp expect actual ' @@ -800,7 +832,7 @@ test_expect_success 'merge with conflicted --autostash changes' ' git diff >expect && test_when_finished "test_might_fail git stash drop" && git merge --autostash c3 2>err && - test_i18ngrep "Applying autostash resulted in conflicts." err && + test_grep "Applying autostash resulted in conflicts." err && git show HEAD:file >merge-result && test_cmp result.1-9 merge-result && git stash show -p >actual && @@ -808,10 +840,10 @@ test_expect_success 'merge with conflicted --autostash changes' ' ' cat >expected.branch <<\EOF -Merge branch 'c5-branch' (early part) into master +Merge branch 'c5-branch' (early part) EOF cat >expected.tag <<\EOF -Merge commit 'c5~1' into master +Merge commit 'c5~1' EOF test_expect_success 'merge early part of c2' ' @@ -944,16 +976,16 @@ test_expect_success 'set up mod-256 conflict scenario' ' # 256 near-identical stanzas... for i in $(test_seq 1 256); do for j in 1 2 3 4 5; do - echo $i-$j + echo $i-$j || return 1 done done >file && git add file && git commit -m base && - # one side changes the first line of each to "master" - sed s/-1/-master/ file >tmp && + # one side changes the first line of each to "main" + sed s/-1/-main/ file >tmp && mv tmp file && - git commit -am master && + git commit -am main && # and the other to "side"; merging the two will # yield 256 separate conflicts @@ -965,12 +997,12 @@ test_expect_success 'set up mod-256 conflict scenario' ' test_expect_success 'merge detects mod-256 conflicts (recursive)' ' git reset --hard && - test_must_fail git merge -s recursive master + test_must_fail git merge -s recursive main ' test_expect_success 'merge detects mod-256 conflicts (resolve)' ' git reset --hard && - test_must_fail git merge -s resolve master + test_must_fail git merge -s resolve main ' test_expect_success 'merge nothing into void' ' |