Re: [PATCH] t5300-pack-object.sh: portability issue using /usr/bin/stat
From: Randal L. Schwartz <hidden>
Date: 2016-06-15 22:43:03
quoted
quoted
quoted
quoted
"Junio" == Junio C Hamano [off-list ref] writes:
Junio> arjen@yaph.org (Arjen Laarhoven) writes:
quoted
In the test 'compare delta flavors', /usr/bin/stat is used to get file size. This isn't portable. There already is a dependency on Perl, use its '-s' operator to get the file size.
Junio> If you do use Perl, then you do not want to do it as two
Junio> separate invocations with their result compared with test.
Junio> How about this on top of your patch?
Junio> diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh
Junio> index a400e7a..5710a23 100755
Junio> --- a/t/t5300-pack-object.sh
Junio> +++ b/t/t5300-pack-object.sh
Junio> @@ -123,11 +123,13 @@ test_expect_success \
Junio> done'
Junio> cd "$TRASH"
Junio> -test_expect_success \
Junio> - 'compare delta flavors' \
Junio> - 'size_2=`perl -e "print -s q[test-2-${packname_2}.pack]"` &&
Junio> - size_3=`perl -e "print -s q[test-3-${packname_3}.pack]"` &&
Junio> - test $size_2 -gt $size_3'
Junio> +test_expect_success 'compare delta flavors' '
Junio> + perl -e "
Junio> + exit ( ((-s q[test-2-${packname_2}.pack]) >
Junio> + (-s q[test-3-${packname_3}.pack]))
Junio> + ? 0 : 1);
Junio> + "
Junio> +'
I'd go with:
perl -e '
defined($_ = -s $_) or die for @ARGV;
exit 1 if $ARGV[0] <= $ARGV[1];
' test-2-$packname_2.pack test-3.$packname_3.pack
which also tests to make sure the -s returned something, and works a lot less
hard to quote the filenames coming in (they come in via @ARGV instead of
triple interpolation). I'm not sure how to shoehorn that into
test_expect_success, but this is better Perl at least. :)
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
[off-list ref] <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!