diff options
Diffstat (limited to 'third_party/git/t/t7611-merge-abort.sh')
-rwxr-xr-x | third_party/git/t/t7611-merge-abort.sh | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/third_party/git/t/t7611-merge-abort.sh b/third_party/git/t/t7611-merge-abort.sh deleted file mode 100755 index 7c84a518aa39..000000000000 --- a/third_party/git/t/t7611-merge-abort.sh +++ /dev/null @@ -1,201 +0,0 @@ -#!/bin/sh - -test_description='test aborting in-progress merges - -Set up repo with conflicting and non-conflicting branches: - -There are three files foo/bar/baz, and the following graph illustrates the -content of these files in each commit: - -# foo/bar/baz --- foo/bar/bazz <-- master -# \ -# --- foo/barf/bazf <-- conflict_branch -# \ -# --- foo/bart/baz <-- clean_branch - -Next, test git merge --abort with the following variables: -- before/after successful merge (should fail when not in merge context) -- with/without conflicts -- clean/dirty index before merge -- clean/dirty worktree before merge -- dirty index before merge matches contents on remote branch -- changed/unchanged worktree after merge -- changed/unchanged index after merge -' -. ./test-lib.sh - -test_expect_success 'setup' ' - # Create the above repo - echo foo > foo && - echo bar > bar && - echo baz > baz && - git add foo bar baz && - git commit -m initial && - echo bazz > baz && - git commit -a -m "second" && - git checkout -b conflict_branch HEAD^ && - echo barf > bar && - echo bazf > baz && - git commit -a -m "conflict" && - git checkout -b clean_branch HEAD^ && - echo bart > bar && - git commit -a -m "clean" && - git checkout master -' - -pre_merge_head="$(git rev-parse HEAD)" - -test_expect_success 'fails without MERGE_HEAD (unstarted merge)' ' - test_must_fail git merge --abort 2>output && - test_i18ngrep MERGE_HEAD output -' - -test_expect_success 'fails without MERGE_HEAD (unstarted merge): .git/MERGE_HEAD sanity' ' - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" -' - -test_expect_success 'fails without MERGE_HEAD (completed merge)' ' - git merge clean_branch && - test ! -f .git/MERGE_HEAD && - # Merge successfully completed - post_merge_head="$(git rev-parse HEAD)" && - test_must_fail git merge --abort 2>output && - test_i18ngrep MERGE_HEAD output -' - -test_expect_success 'fails without MERGE_HEAD (completed merge): .git/MERGE_HEAD sanity' ' - test ! -f .git/MERGE_HEAD && - test "$post_merge_head" = "$(git rev-parse HEAD)" -' - -test_expect_success 'Forget previous merge' ' - git reset --hard "$pre_merge_head" -' - -test_expect_success 'Abort after --no-commit' ' - # Redo merge, but stop before creating merge commit - git merge --no-commit clean_branch && - test -f .git/MERGE_HEAD && - # Abort non-conflicting merge - git merge --abort && - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" && - test -z "$(git diff)" && - test -z "$(git diff --staged)" -' - -test_expect_success 'Abort after conflicts' ' - # Create conflicting merge - test_must_fail git merge conflict_branch && - test -f .git/MERGE_HEAD && - # Abort conflicting merge - git merge --abort && - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" && - test -z "$(git diff)" && - test -z "$(git diff --staged)" -' - -test_expect_success 'Clean merge with dirty index fails' ' - echo xyzzy >> foo && - git add foo && - git diff --staged > expect && - test_must_fail git merge clean_branch && - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" && - test -z "$(git diff)" && - git diff --staged > actual && - test_cmp expect actual -' - -test_expect_success 'Conflicting merge with dirty index fails' ' - test_must_fail git merge conflict_branch && - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" && - test -z "$(git diff)" && - git diff --staged > actual && - test_cmp expect actual -' - -test_expect_success 'Reset index (but preserve worktree changes)' ' - git reset "$pre_merge_head" && - git diff > actual && - test_cmp expect actual -' - -test_expect_success 'Abort clean merge with non-conflicting dirty worktree' ' - git merge --no-commit clean_branch && - test -f .git/MERGE_HEAD && - # Abort merge - git merge --abort && - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" && - test -z "$(git diff --staged)" && - git diff > actual && - test_cmp expect actual -' - -test_expect_success 'Abort conflicting merge with non-conflicting dirty worktree' ' - test_must_fail git merge conflict_branch && - test -f .git/MERGE_HEAD && - # Abort merge - git merge --abort && - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" && - test -z "$(git diff --staged)" && - git diff > actual && - test_cmp expect actual -' - -test_expect_success 'Reset worktree changes' ' - git reset --hard "$pre_merge_head" -' - -test_expect_success 'Fail clean merge with conflicting dirty worktree' ' - echo xyzzy >> bar && - git diff > expect && - test_must_fail git merge --no-commit clean_branch && - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" && - test -z "$(git diff --staged)" && - git diff > actual && - test_cmp expect actual -' - -test_expect_success 'Fail conflicting merge with conflicting dirty worktree' ' - test_must_fail git merge conflict_branch && - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" && - test -z "$(git diff --staged)" && - git diff > actual && - test_cmp expect actual -' - -test_expect_success 'Reset worktree changes' ' - git reset --hard "$pre_merge_head" -' - -test_expect_success 'Fail clean merge with matching dirty worktree' ' - echo bart > bar && - git diff > expect && - test_must_fail git merge --no-commit clean_branch && - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" && - test -z "$(git diff --staged)" && - git diff > actual && - test_cmp expect actual -' - -test_expect_success 'Fail conflicting merge with matching dirty worktree' ' - echo barf > bar && - git diff > expect && - test_must_fail git merge conflict_branch && - test ! -f .git/MERGE_HEAD && - test "$pre_merge_head" = "$(git rev-parse HEAD)" && - test -z "$(git diff --staged)" && - git diff > actual && - test_cmp expect actual -' - -test_done |