From 264474f29a3f41124f98e955b41ebe4e36d14b53 Mon Sep 17 00:00:00 2001 From: Wincent Colaiuta Date: Sat, 8 Dec 2007 13:29:47 +0100 Subject: Add tests for pre-commit and commit-msg hooks As desired, these pass for git-commit.sh, fail for builtin-commit (prior to the fixes), and succeeded for builtin-commit (after the fixes). Signed-off-by: Wincent Colaiuta Signed-off-by: Junio C Hamano --- t/t7503-pre-commit-hook.sh | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100755 t/t7503-pre-commit-hook.sh (limited to 't/t7503-pre-commit-hook.sh') diff --git a/t/t7503-pre-commit-hook.sh b/t/t7503-pre-commit-hook.sh new file mode 100755 index 0000000000..c8097a72d9 --- /dev/null +++ b/t/t7503-pre-commit-hook.sh @@ -0,0 +1,64 @@ +#!/bin/sh + +test_description='pre-commit hook' + +. ./test-lib.sh + +test_expect_success "with no hook" \ + "echo 'foo' > file && + git add file && + git commit -m 'first'" + +test_expect_success "--no-verify with no hook" \ + "echo 'bar' > file && + git add file && + git commit --no-verify -m 'bar'" + +# now install hook that always succeeds +HOOKDIR="$(git rev-parse --git-dir)/hooks" +HOOK="$HOOKDIR/pre-commit" +mkdir -p "$HOOKDIR" +cat > "$HOOK" <> file && + git add file && + git commit -m 'more'" + +test_expect_success "--no-verify with succeeding hook" \ + "echo 'even more' >> file && + git add file && + git commit --no-verify -m 'even more'" + +# now a hook that fails +cat > "$HOOK" <> file && + git add file && + git commit -m 'another'" + +test_expect_success "--no-verify with failing hook" \ + "echo 'stuff' >> file && + git add file && + git commit --no-verify -m 'stuff'" + +chmod -x "$HOOK" +test_expect_success "with non-executable hook" \ + "echo 'content' >> file && + git add file && + git commit -m 'content'" + +test_expect_success "--no-verify with non-executable hook" \ + "echo 'more content' >> file && + git add file && + git commit --no-verify -m 'more content'" + +test_done -- cgit v1.2.3 From cf7e147cce9248e34b2e926d813c975c539aeaa6 Mon Sep 17 00:00:00 2001 From: Wincent Colaiuta Date: Mon, 10 Dec 2007 08:42:45 +0100 Subject: Style fixes for pre-commit hook tests As pointed out by Junio on the mailing list, surrounding tests in double quotes can lead to bugs wherein variables get substituted away, so this isn't just style churn but important to prevent others from looking at these tests in the future and thinking that this is "the way" that Git tests should be written. Signed-off-by: Wincent Colaiuta Signed-off-by: Junio C Hamano --- t/t7503-pre-commit-hook.sh | 90 +++++++++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 33 deletions(-) (limited to 't/t7503-pre-commit-hook.sh') diff --git a/t/t7503-pre-commit-hook.sh b/t/t7503-pre-commit-hook.sh index c8097a72d9..d787cac2f7 100755 --- a/t/t7503-pre-commit-hook.sh +++ b/t/t7503-pre-commit-hook.sh @@ -4,15 +4,21 @@ test_description='pre-commit hook' . ./test-lib.sh -test_expect_success "with no hook" \ - "echo 'foo' > file && - git add file && - git commit -m 'first'" +test_expect_success 'with no hook' ' -test_expect_success "--no-verify with no hook" \ - "echo 'bar' > file && - git add file && - git commit --no-verify -m 'bar'" + echo "foo" > file && + git add file && + git commit -m "first" + +' + +test_expect_success '--no-verify with no hook' ' + + echo "bar" > file && + git add file && + git commit --no-verify -m "bar" + +' # now install hook that always succeeds HOOKDIR="$(git rev-parse --git-dir)/hooks" @@ -24,15 +30,21 @@ exit 0 EOF chmod +x "$HOOK" -test_expect_success "with succeeding hook" \ - "echo 'more' >> file && - git add file && - git commit -m 'more'" +test_expect_success 'with succeeding hook' ' + + echo "more" >> file && + git add file && + git commit -m "more" -test_expect_success "--no-verify with succeeding hook" \ - "echo 'even more' >> file && - git add file && - git commit --no-verify -m 'even more'" +' + +test_expect_success '--no-verify with succeeding hook' ' + + echo "even more" >> file && + git add file && + git commit --no-verify -m "even more" + +' # now a hook that fails cat > "$HOOK" < "$HOOK" <> file && - git add file && - git commit -m 'another'" +test_expect_failure 'with failing hook' ' + + echo "another" >> file && + git add file && + git commit -m "another" -test_expect_success "--no-verify with failing hook" \ - "echo 'stuff' >> file && - git add file && - git commit --no-verify -m 'stuff'" +' + +test_expect_success '--no-verify with failing hook' ' + + echo "stuff" >> file && + git add file && + git commit --no-verify -m "stuff" + +' chmod -x "$HOOK" -test_expect_success "with non-executable hook" \ - "echo 'content' >> file && - git add file && - git commit -m 'content'" - -test_expect_success "--no-verify with non-executable hook" \ - "echo 'more content' >> file && - git add file && - git commit --no-verify -m 'more content'" +test_expect_success 'with non-executable hook' ' + + echo "content" >> file && + git add file && + git commit -m "content" + +' + +test_expect_success '--no-verify with non-executable hook' ' + + echo "more content" >> file && + git add file && + git commit --no-verify -m "more content" + +' test_done -- cgit v1.2.3