Add tests for pre-commit and commit-msg hooks
[git/trast.git] / t / t7503-pre-commit-hook.sh
blobc8097a72d947ecbaadf307687d5fcc2608fe4b45
1 #!/bin/sh
3 test_description='pre-commit hook'
5 . ./test-lib.sh
7 test_expect_success "with no hook" \
8 "echo 'foo' > file &&
9 git add file &&
10 git commit -m 'first'"
12 test_expect_success "--no-verify with no hook" \
13 "echo 'bar' > file &&
14 git add file &&
15 git commit --no-verify -m 'bar'"
17 # now install hook that always succeeds
18 HOOKDIR="$(git rev-parse --git-dir)/hooks"
19 HOOK="$HOOKDIR/pre-commit"
20 mkdir -p "$HOOKDIR"
21 cat > "$HOOK" <<EOF
22 #!/bin/sh
23 exit 0
24 EOF
25 chmod +x "$HOOK"
27 test_expect_success "with succeeding hook" \
28 "echo 'more' >> file &&
29 git add file &&
30 git commit -m 'more'"
32 test_expect_success "--no-verify with succeeding hook" \
33 "echo 'even more' >> file &&
34 git add file &&
35 git commit --no-verify -m 'even more'"
37 # now a hook that fails
38 cat > "$HOOK" <<EOF
39 #!/bin/sh
40 exit 1
41 EOF
43 test_expect_failure "with failing hook" \
44 "echo 'another' >> file &&
45 git add file &&
46 git commit -m 'another'"
48 test_expect_success "--no-verify with failing hook" \
49 "echo 'stuff' >> file &&
50 git add file &&
51 git commit --no-verify -m 'stuff'"
53 chmod -x "$HOOK"
54 test_expect_success "with non-executable hook" \
55 "echo 'content' >> file &&
56 git add file &&
57 git commit -m 'content'"
59 test_expect_success "--no-verify with non-executable hook" \
60 "echo 'more content' >> file &&
61 git add file &&
62 git commit --no-verify -m 'more content'"
64 test_done