Re: [PATCH v3 1/1] check-non-portable-shell.pl: Quoted `wc -l` is not portable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tboegi@xxxxxx writes:

>
> Reviewed-by: Johannes Schindelin <Johannes.Schindelin@xxxxxx>
> Signed-off-by: Torsten Bögershausen <tboegi@xxxxxx>

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 <tboegi@xxxxxx>
    Reviewed-by: Johannes Schindelin <Johannes.Schindelin@xxxxxx>
    Helped-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx>
    Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx>

> ---
>  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 ;-)





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux