]> git.ipfire.org Git - thirdparty/git.git/commitdiff
hook tests: test for exact "pre-push" hook input
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Fri, 18 Feb 2022 20:52:58 +0000 (21:52 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 20 Feb 2022 07:49:56 +0000 (23:49 -0800)
Extend the tests added in ec55559f937 (push: Add support for pre-push
hooks, 2013-01-13) to exhaustively test for the exact input we're
expecting. This ensures that we e.g. don't miss a trailing newline.

Appending to a file called "actual" is the established convention in
this test for hooks, see the rest of the tests added in
ec55559f937 (push: Add support for pre-push hooks, 2013-01-13). Let's
follow that convention here.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5571-pre-push-hook.sh

index 660f876eec2122f3b00e2dd087a03e2ffcd685e2..47f6eb509d6b3873156ea684c2de2c17b646f091 100755 (executable)
@@ -11,7 +11,7 @@ HOOKDIR="$(git rev-parse --git-dir)/hooks"
 HOOK="$HOOKDIR/pre-push"
 mkdir -p "$HOOKDIR"
 write_script "$HOOK" <<EOF
-cat >/dev/null
+cat >actual
 exit 0
 EOF
 
@@ -20,10 +20,16 @@ test_expect_success 'setup' '
        git init --bare repo1 &&
        git remote add parent1 repo1 &&
        test_commit one &&
-       git push parent1 HEAD:foreign
+       cat >expect <<-EOF &&
+       HEAD $(git rev-parse HEAD) refs/heads/foreign $(test_oid zero)
+       EOF
+
+       test_when_finished "rm actual" &&
+       git push parent1 HEAD:foreign &&
+       test_cmp expect actual
 '
 write_script "$HOOK" <<EOF
-cat >/dev/null
+cat >actual
 exit 1
 EOF
 
@@ -32,11 +38,18 @@ export COMMIT1
 
 test_expect_success 'push with failing hook' '
        test_commit two &&
-       test_must_fail git push parent1 HEAD
+       cat >expect <<-EOF &&
+       HEAD $(git rev-parse HEAD) refs/heads/main $(test_oid zero)
+       EOF
+
+       test_when_finished "rm actual" &&
+       test_must_fail git push parent1 HEAD &&
+       test_cmp expect actual
 '
 
 test_expect_success '--no-verify bypasses hook' '
-       git push --no-verify parent1 HEAD
+       git push --no-verify parent1 HEAD &&
+       test_path_is_missing actual
 '
 
 COMMIT2="$(git rev-parse HEAD)"