With a failing automatic merge, we want to make sure that we *don't*
call the pre-merge-commit hook and that we (eventually) *do* call the
pre-commit hook.

Signed-off-by: Martin Ågren <[email protected]>
---
 ...3-pre-commit-and-pre-merge-commit-hooks.sh | 30 +++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/t/t7503-pre-commit-and-pre-merge-commit-hooks.sh 
b/t/t7503-pre-commit-and-pre-merge-commit-hooks.sh
index f0c73fd58d..4bf359c097 100755
--- a/t/t7503-pre-commit-and-pre-merge-commit-hooks.sh
+++ b/t/t7503-pre-commit-and-pre-merge-commit-hooks.sh
@@ -41,6 +41,18 @@ test_expect_success 'root commit' '
        git checkout master
 '
 
+test_expect_success 'setup conflicting branches' '
+       test_when_finished "git checkout master" &&
+       git checkout -b conflicting-a master &&
+       echo a >conflicting &&
+       git add conflicting &&
+       git commit -m conflicting-a &&
+       git checkout -b conflicting-b master &&
+       echo b >conflicting &&
+       git add conflicting &&
+       git commit -m conflicting-b
+'
+
 test_expect_success 'with no hook' '
        test_when_finished "rm -f actual_hooks" &&
        echo "foo" >file &&
@@ -93,6 +105,24 @@ test_expect_success 'with succeeding hook (merge)' '
        test_cmp expected_hooks actual_hooks
 '
 
+test_expect_success 'automatic merge fails; both hooks are available' '
+       test_when_finished "rm -f \"$PREMERGE\" \"$PRECOMMIT\"" &&
+       test_when_finished "rm -f expected_hooks actual_hooks" &&
+       test_when_finished "git checkout master" &&
+       ln -s "success.sample" "$PREMERGE" &&
+       ln -s "success.sample" "$PRECOMMIT" &&
+
+       git checkout conflicting-a &&
+       test_must_fail git merge -m "merge conflicting-b" conflicting-b &&
+       test_path_is_missing actual_hooks &&
+
+       echo "$PRECOMMIT" >expected_hooks &&
+       echo a+b >conflicting &&
+       git add conflicting &&
+       git commit -m "resolve conflict" &&
+       test_cmp expected_hooks actual_hooks
+'
+
 test_expect_success '--no-verify with succeeding hook' '
        test_when_finished "rm -f \"$PRECOMMIT\" actual_hooks" &&
        ln -s "success.sample" "$PRECOMMIT" &&
-- 
2.23.0.rc0.30.g51cf315870

Reply via email to