Re: [PATCH] t4014: shell portability fix
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 1, 2016, 15:07 UTC
- Message-ID
- <xmqqfusx0wyj.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20160601070425.GA13648@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 6 quoted lines
>> > eval "${1%%=*}=\${1#*=}"
>>
>> Is this an elaborate way to say 'eval "$1"', or is there anything
>> more subtle going on?
>
> Notice that the value half isn't expanded until we get inside the eval.Ahh, right.
> Here's the patch I wrote up earlier (but was too timid to send out after > my barrage of emails :) ).
Looks very sensible. I'll drop all these "Attempt to test with ksh93 found these breakages" patches and queue this one.
Show 17 quoted lines
> -- >8 -- > Subject: test-lib: add in-shell "env" replacement > > The one-shot environment variable syntax: > > FOO=BAR some-program > > is unportable when some-program is actually a shell > function, like test_must_fail (on some shells FOO remains > set after the function returns, and on others it does not). > > We sometimes get around this by using env, like: > > test_must_fail env FOO=BAR some-program > > But that only works because test_must_fail's arguments are > themselves a command which can be run. You can't run:
We can do "test_must_fail test_commit ...", but "test_must_fail env FOO=BAR test_commit ..." would not work, right?
If so s/because/when/, perhaps?