git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] t5300-pack-object.sh: portability issue using /usr/bin/stat

From
Randal L. Schwartz <merlyn@stonehenge.com>
Date
Apr 7, 2007, 02:45 UTC
Message-ID
<86odm0sy19.fsf@blue.stonehenge.com>
In-Reply-To
<7vfy7dgcn1.fsf@assigned-by-dhcp.cox.net>
>>>>> "Junio" == Junio C Hamano <junkio@cox.net> writes:
Junio> arjen@yaph.org (Arjen Laarhoven) writes:
>> 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
<merlyn@stonehenge.com> <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!
Previous: Nicolas Pitre
Message 6 of 6 in “t5300-pack-object.sh: portability issue using /usr/bin/stat”
  1. t5300-pack-object.sh: portability issue using /usr/bin/statArjen Laarhoven, Apr 6, 2007
  2. Junio C HamanoApr 7, 2007
  3. Nicolas PitreApr 7, 2007
  4. Junio C HamanoApr 7, 2007
  5. Nicolas PitreApr 7, 2007
  6. Randal L. SchwartzApr 7, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.