* [PATCH] t0001: check syntax of sample hooks
@ 2010-04-19 8:41 Jonathan Nieder
2010-04-19 20:52 ` Junio C Hamano
0 siblings, 1 reply; 3+ messages in thread
From: Jonathan Nieder @ 2010-04-19 8:41 UTC (permalink / raw)
To: git; +Cc: Ben Walton
Make sure that the sample hooks do not use any shell features
that the shell used to execute them does not support.
The documentation at the end of the sample pre-rebase script will
never be executed, but "sh -n" does not know that. Convert it to
a HERE document to avoid spurious failures.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
I guess this serves as a test for 502be95 (Make templates honour
SHELL_PATH and PERL_PATH, 2010-03-20).
Actually, my motivation is the second part, since I already run a test
like this locally. But I thought, while fixing it, why not make it
easy for others to suffer the same problem, too?
t/t0001-init.sh | 15 +++++++++++++++
templates/hooks--pre-rebase.sample | 3 +++
2 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/t/t0001-init.sh b/t/t0001-init.sh
index 6757734..3e6e1ed 100755
--- a/t/t0001-init.sh
+++ b/t/t0001-init.sh
@@ -141,6 +141,21 @@ test_expect_success 'reinit' '
test_cmp again/empty again/err2
'
+test_expect_success 'sample hooks use acceptable syntax' '
+ mkdir boring &&
+ git init boring &&
+ test -d boring/.git/hooks &&
+ fail=f &&
+ for i in boring/.git/hooks/*.sample
+ do
+ read shebang <"$i" &&
+ shell=${shebang#"#!"} &&
+ $shell -n "$i" ||
+ fail=t
+ done &&
+ test "$fail" = f
+'
+
test_expect_success 'init with --template' '
mkdir template-source &&
echo content >template-source/file &&
diff --git a/templates/hooks--pre-rebase.sample b/templates/hooks--pre-rebase.sample
index 053f111..22a9f07 100755
--- a/templates/hooks--pre-rebase.sample
+++ b/templates/hooks--pre-rebase.sample
@@ -91,6 +91,7 @@ fi
exit 0
################################################################
+cat <<\EOF
This sample hook safeguards topic branches that have been
published from being rewound.
@@ -167,3 +168,5 @@ To compute (2):
git rev-list master..topic
if this is empty, it is fully merged to "master".
+
+EOF
--
1.7.1.rc1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] t0001: check syntax of sample hooks
2010-04-19 8:41 [PATCH] t0001: check syntax of sample hooks Jonathan Nieder
@ 2010-04-19 20:52 ` Junio C Hamano
2010-04-19 21:09 ` Jonathan Nieder
0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2010-04-19 20:52 UTC (permalink / raw)
To: Jonathan Nieder; +Cc: git, Ben Walton
Jonathan Nieder <jrnieder@gmail.com> writes:
> diff --git a/t/t0001-init.sh b/t/t0001-init.sh
> index 6757734..3e6e1ed 100755
> --- a/t/t0001-init.sh
> +++ b/t/t0001-init.sh
> @@ -141,6 +141,21 @@ test_expect_success 'reinit' '
> test_cmp again/empty again/err2
> '
>
> +test_expect_success 'sample hooks use acceptable syntax' '
> + mkdir boring &&
> + git init boring &&
> + test -d boring/.git/hooks &&
> + fail=f &&
> + for i in boring/.git/hooks/*.sample
> + do
> + read shebang <"$i" &&
> + shell=${shebang#"#!"} &&
> + $shell -n "$i" ||
"#!/Program Files/bin/shell"???
I think, after observing what this outputs,
$ echo 'a b c' | (read shebang; echo "<$shebang>")
you would need something like this:
shell=$(sed -e '1{
s/^#!//p
q
}' "$i") &&
"$shell" -n "$i"
> diff --git a/templates/hooks--pre-rebase.sample b/templates/hooks--pre-rebase.sample
> index 053f111..22a9f07 100755
> --- a/templates/hooks--pre-rebase.sample
> +++ b/templates/hooks--pre-rebase.sample
> @@ -91,6 +91,7 @@ fi
> exit 0
>
> ################################################################
> +cat <<\EOF
No need to meow here; just say ":" instead.
> This sample hook safeguards topic branches that have been
> published from being rewound.
> @@ -167,3 +168,5 @@ To compute (2):
> git rev-list master..topic
>
> if this is empty, it is fully merged to "master".
> +
> +EOF
> --
> 1.7.1.rc1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] t0001: check syntax of sample hooks
2010-04-19 20:52 ` Junio C Hamano
@ 2010-04-19 21:09 ` Jonathan Nieder
0 siblings, 0 replies; 3+ messages in thread
From: Jonathan Nieder @ 2010-04-19 21:09 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Ben Walton
Junio C Hamano wrote:
> "#!/Program Files/bin/shell"???
“#!/usr/bin/env sh”?
I will think a little more about this and look at what msysgit does.
>> +cat <<\EOF
>
> No need to meow here; just say ":" instead.
Makes sense.
Thanks,
Jonathan
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-04-19 21:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-19 8:41 [PATCH] t0001: check syntax of sample hooks Jonathan Nieder
2010-04-19 20:52 ` Junio C Hamano
2010-04-19 21:09 ` Jonathan Nieder
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).