Browse Source
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
Wincent Colaiuta
17 years ago
committed by
Junio C Hamano
3 changed files with 153 additions and 1 deletions
@ -0,0 +1,64 @@
@@ -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 |
@ -0,0 +1,88 @@
@@ -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 |
Loading…
Reference in new issue