Files
git/t/t7503-pre-commit-hook.sh
Steffen Prohaska 2186daed27 Merge commit 'junio/master' into devel
Conflicts:
	Makefile
	builtin-clone.c
	t/t4109-apply-multifrag.sh
	t/t4110-apply-scan.sh
2008-07-26 10:46:02 +02:00

95 lines
1.5 KiB
Bash
Executable File

#!/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" <<EOF
#!/bin/sh
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 '--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" <<EOF
#!/bin/sh
exit 1
EOF
test_expect_success 'with failing hook' '
echo "another" >> file &&
git add file &&
test_must_fail 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"
if test "$(git config --bool core.filemode)" = false; then
say "executable bit not honored - skipping tests of non-executable hook"
else
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"
'
fi # non-executable hooks
test_done