[email protected] writes:
>
> Reviewed-by: Johannes Schindelin <[email protected]>
> Signed-off-by: Torsten Bögershausen <[email protected]>
I'll flip these and add a helped-by to credit Eric.
check-non-portable-shell.pl: `wc -l` may have leading WS
Test scripts count number of lines in an output and check it againt
its expectation. fb3340a6 ("test-lib: introduce test_line_count to
measure files", 2010-10-31) introduced a helper to show a failure in
such a test in a more readable way than comparing `wc -l` output with
a number.
Besides, on some platforms, "$(wc -l <file)" is padded with leading
whitespace on the left, so
test "$(wc -l <file)" = 4
would not work (most notably on macosX); the users of test_line_count
helper would not suffer from such a portability glitch.
Add a check in check-non-portable-shell.pl to find '"' between
`wc -l` and '=' and hint the user about test_line_count().
Signed-off-by: Torsten Bögershausen <[email protected]>
Reviewed-by: Johannes Schindelin <[email protected]>
Helped-by: Eric Sunshine <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
> ---
> t/check-non-portable-shell.pl | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/t/check-non-portable-shell.pl b/t/check-non-portable-shell.pl
> index 03dc9d285..e07f02843 100755
>
> Use () around the hint.
> Thanks to Eric for the sharp eyes.
>
> --- a/t/check-non-portable-shell.pl
> +++ b/t/check-non-portable-shell.pl
Don't try to apply this patch to your tree yourself ;-)
> @@ -21,6 +21,7 @@ while (<>) {
> /^\s*declare\s+/ and err 'arrays/declare not portable';
> /^\s*[^#]\s*which\s/ and err 'which is not portable (please use type)';
> /\btest\s+[^=]*==/ and err '"test a == b" is not portable (please use
> =)';
> + /\bwc -l.*"\s*=/ and err '`"$(wc -l)"` is not portable (please use
> test_line_count)';
> /\bexport\s+[A-Za-z0-9_]*=/ and err '"export FOO=bar" is not portable
> (please use FOO=bar && export FOO)';
> # this resets our $. for each file
> close ARGV if eof;
Thanks. The dq before \s*= is rather cute ;-)