Re: [PATCH 4/4] t7503: add tests for pre-merge-hook

2017-09-22 Thread Stefan Beller
On Fri, Sep 22, 2017 at 5:04 AM, Michael J Gruber  wrote:

> --- a/t/t7503-pre-commit-hook.sh
> +++ b/t/t7503-pre-commit-hook.sh

> -test_description='pre-commit hook'
> +test_description='pre-commit and pre-merge hooks'

Tangent: do we also want to rename the file?

> +test_expect_success '--no-verify with succeeding hook (merge)' '

The return value of the hook ought to not matter, so we'd rather want
to test for 'no side effect by hook on --no-verify' ?


> +test_expect_success '--no-verify with failing hook (merge)' '
> +
> +   git checkout side &&
> +   git merge --no-verify -m "merge master" master &&
> +   git checkout master
> +
> +'

I assume the same (unsolved) issues apply to this hook as
to the commit-msg hook with 'git merge --continue'
Do we want a test for that (I am torn on that) ?


[PATCH 4/4] t7503: add tests for pre-merge-hook

2017-09-22 Thread Michael J Gruber
From: Michael J Gruber 

Add tests which make sure that the pre-merge-hook is called when
present, allows/disallows merge commits depending on its return value
and is suppressed by "--no-verify".

Signed-off-by: Michael J Gruber 
---
 t/t7503-pre-commit-hook.sh | 66 +-
 1 file changed, 65 insertions(+), 1 deletion(-)

diff --git a/t/t7503-pre-commit-hook.sh b/t/t7503-pre-commit-hook.sh
index 984889b39d..36ae87f7ef 100755
--- a/t/t7503-pre-commit-hook.sh
+++ b/t/t7503-pre-commit-hook.sh
@@ -1,9 +1,22 @@
 #!/bin/sh
 
-test_description='pre-commit hook'
+test_description='pre-commit and pre-merge hooks'
 
 . ./test-lib.sh
 
+test_expect_success 'root commit' '
+
+   echo "root" > file &&
+   git add file &&
+   git commit -m "zeroth" &&
+   git checkout -b side &&
+   echo "foo" > foo &&
+   git add foo &&
+   git commit -m "make it non-ff" &&
+   git checkout master
+
+'
+
 test_expect_success 'with no hook' '
 
echo "foo" > file &&
@@ -12,6 +25,14 @@ test_expect_success 'with no hook' '
 
 '
 
+test_expect_success 'with no hook (merge)' '
+
+   git checkout side &&
+   git merge -m "merge master" master &&
+   git checkout master
+
+'
+
 test_expect_success '--no-verify with no hook' '
 
echo "bar" > file &&
@@ -20,15 +41,25 @@ test_expect_success '--no-verify with no hook' '
 
 '
 
+test_expect_success '--no-verify with no hook (merge)' '
+
+   git checkout side &&
+   git merge --no-verify -m "merge master" master &&
+   git checkout master
+
+'
+
 # now install hook that always succeeds
 HOOKDIR="$(git rev-parse --git-dir)/hooks"
 HOOK="$HOOKDIR/pre-commit"
+MERGEHOOK="$HOOKDIR/pre-merge"
 mkdir -p "$HOOKDIR"
 cat > "$HOOK" <> file &&
@@ -46,11 +85,20 @@ test_expect_success '--no-verify with succeeding hook' '
 
 '
 
+test_expect_success '--no-verify with succeeding hook (merge)' '
+
+   git checkout side &&
+   git merge --no-verify -m "merge master" master &&
+   git checkout master
+
+'
+
 # now a hook that fails
 cat > "$HOOK" <