diff options
authorJunio C Hamano <>2016-04-12 16:59:59 (GMT)
committerJunio C Hamano <>2016-04-12 16:59:59 (GMT)
commit7bec7f50ae10ce760160ed4d11e47cd0494cb8d7 (patch)
parenta3bb8ca74ca01859f5eed962256faea737d4db7c (diff)
t3404: use write_script
The test uses hardcoded #!/bin/sh to create a pre-commit hook script. Because the generated script uses $(command substitution), which is not supported by /bin/sh on some platforms (e.g. Solaris), the resulting pre-commit always fails. Which is not noticeable as the test that uses the hook is about checking the behaviour of the command when the hook fails ;-), but nevertheless it is not testing what we wanted to test. Use write_script so that the resulting script is run under the same shell our scripted Porcelain commands are run, which must support the necessary $(construct). Helped-by: Jeff King <> Signed-off-by: Junio C Hamano <>
1 files changed, 3 insertions, 4 deletions
diff --git a/t/ b/t/
index 544f9ad..d6d65a3 100755
--- a/t/
+++ b/t/
@@ -555,10 +555,9 @@ test_expect_success 'rebase a detached HEAD' '
test_expect_success 'rebase a commit violating pre-commit' '
mkdir -p .git/hooks &&
- PRE_COMMIT=.git/hooks/pre-commit &&
- echo "#!/bin/sh" > $PRE_COMMIT &&
- echo "test -z \"\$(git diff --cached --check)\"" >> $PRE_COMMIT &&
- chmod a+x $PRE_COMMIT &&
+ write_script .git/hooks/pre-commit <<-\EOF &&
+ test -z "$(git diff --cached --check)"
echo "monde! " >> file1 &&
test_tick &&
test_must_fail git commit -m doesnt-verify file1 &&