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 <win@wincent.com>
---
t/t7501-commit.sh | 2 +-
t/t7503-pre-commit-hook.sh | 64 ++++++++++++++++++++++++++++++++
t/t7504-commit-msg-hook.sh | 88 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 153 insertions(+), 1 deletions(-)
create mode 100755 t/t7503-pre-commit-hook.sh
create mode 100755 t/t7504-commit-msg-hook.sh
diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh
index 19c4b2c..05aa97d 100755
--- a/t/t7501-commit.sh
+++ b/t/t7501-commit.sh
@@ -4,7 +4,7 @@
#
# FIXME: Test the various index usages, -i and -o, test reflog,
-# signoff, hooks
+# signoff
test_description='git-commit'
. ./test-lib.sh
diff --git a/t/t7503-pre-commit-hook.sh b/t/t7503-pre-commit-hook.sh
new file mode 100755
index 0000000..c8097a7
--- /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" <<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_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'"
+
+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
diff --git a/t/t7504-commit-msg-hook.sh b/t/t7504-commit-msg-hook.sh
new file mode 100755
index 0000000..17aad7c
--- /dev/null
+++ b/t/t7504-commit-msg-hook.sh
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+test_description='commit-msg 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/commit-msg"
+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_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'"
+
+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'"
+
+# now a hook that edits the commit message
+cat > "$HOOK" <<'EOF'
+#!/bin/sh
+echo "new message" > "$1"
+exit 0
+EOF
+chmod +x "$HOOK"
+
+commit_msg_is () {
+ test "`git log --pretty=format:%s%b -1`" = "$1"
+}
+
+test_expect_success "hook edits commit message" \
+ "echo 'additional' >> file &&
+ git add file &&
+ git commit -m 'additional' &&
+ commit_msg_is 'new message'"
+
+test_expect_success "hook doesn't edit commit message" \
+ "echo 'plus' >> file &&
+ git add file &&
+ git commit --no-verify -m 'plus' &&
+ commit_msg_is 'plus'"
+
+test_done
--
1.5.3.7.1115.g3d1c
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
| Greg Kroah-Hartman | [PATCH 019/196] DMA: Convert from class_device to device for DMA engine |
| Tejun Heo | [PATCH 4/7] FUSE: implement direct lseek support |
| Parag Warudkar | BUG: soft lockup - CPU#1 stuck for 15s! [swapper:0] |
| Greg Smith | PostgreSQL pgbench performance regression in 2.6.23+ |
git: | |
| Len Brown | fatal: unable to create '.git/index': File exists |
| Dan Farina | backup or mirror a repository |
| André Goddard Rosa | Using kdiff3 to compare two different revisions of a folder |
| Petko Manolov | git and binary files |
| Richard Stallman | Real men don't attack straw men |
| Steve B | Intel Atom and D945GCLF2 |
| Jeff Ross | U320 Drive on U160 controller? |
| Sunnz | How do I configure sendmail? |
| Eric Dumazet | [PATCH] fs: pipe/sockets/anon dentries should not have a parent |
| Denys Fedoryshchenko | thousands of classes, e1000 TX unit hang |
| Wei Yongjun | [PATCH] xfrm: Fix kernel panic when flush and dump SPD entries |
| Steffen Klassert | [RFC PATCH 4/5] crypto: allow allocation of percpu crypto transforms |
