Since d1c5f2a (Add git-am, applymbox replacement., 2005-10-07), git-am
will invoke the applypatch-msg hooks just after extracting the patch
message. If the applypatch-msg hook exits with a non-zero status, git-am
abort before even applying the patch to the index.
Add tests for this hook.
Cc: Junio C Hamano gits...@pobox.com
Signed-off-by: Paul Tan pyoka...@gmail.com
---
t/t4150-am.sh | 39 +++
1 file changed, 39 insertions(+)
diff --git a/t/t4150-am.sh b/t/t4150-am.sh
index 05494e9..24c1b42 100755
--- a/t/t4150-am.sh
+++ b/t/t4150-am.sh
@@ -198,6 +198,45 @@ test_expect_success 'am applies patch e-mail with
preceding whitespace' '
test $(git rev-parse second^) = $(git rev-parse HEAD^)
'
+test_expect_success 'am with applypatch-msg hook' '
+ test_when_finished rm -f .git/hooks/applypatch-msg
+ rm -fr .git/rebase-apply
+ git reset --hard
+ git checkout first
+ mkdir -p .git/hooks
+ cat .git/hooks/applypatch-msg -\EOF
+ #!/bin/sh
+ cat $1 actual-msg
+ echo hook-message $1
+ EOF
+ chmod +x .git/hooks/applypatch-msg
+ git am patch1
+ test_path_is_missing .git/rebase-apply
+ git diff --exit-code second
+ echo hook-message expected
+ git log -1 --format=format:%B actual
+ test_cmp expected actual
+ git log -1 --format=format:%B second expected
+ test_cmp expected actual-msg
+'
+
+test_expect_success 'am with failing applypatch-msg hook' '
+ test_when_finished rm -f .git/hooks/applypatch-msg
+ rm -fr .git/rebase-apply
+ git reset --hard
+ git checkout first
+ mkdir -p .git/hooks
+ cat .git/hooks/applypatch-msg -\EOF
+ #!/bin/sh
+ exit 1
+ EOF
+ chmod +x .git/hooks/applypatch-msg
+ test_must_fail git am patch1
+ test_path_is_dir .git/rebase-apply
+ git diff --exit-code first
+ test_cmp_rev first HEAD
+'
+
test_expect_success 'setup: new author and committer' '
GIT_AUTHOR_NAME=Another Thor
GIT_AUTHOR_EMAIL=a.t...@example.com
--
2.5.0.rc1.81.gfe77482
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html