Re: [PATCH] t4014: shell portability fix
- From
Jeff King <peff@peff.net>
- Date
- Jun 1, 2016, 02:31 UTC
- Message-ID
- <20160601023159.GA5411@sigill.intra.peff.net>
- In-Reply-To
- <CAPig+cR989yU4+JNTFREaeXqY61nusUOhufeBGGVCi29tR1P5w@mail.gmail.com>
On Tue, May 31, 2016 at 08:09:43PM -0400, Eric Sunshine wrote:
> >> - GIT_AUTHOR_NAME="éxötìc" test_commit exotic && > >> + (export GIT_AUTHOR_NAME="éxötìc"; test_commit exotic) && > > Isn't "export FOO=val" unportable?
Good catch. I was so busy looking for other cases I didn't even see the problem here.
Show 8 quoted lines
> > Thanks. This one is my fault. There's another use of the same name > > elsewhere, but it's to call "git commit" directly, so it's OK. > > I was under the impression that the project was moving toward 'env' to > deal[1] with this sort of issue. > > [1]: 512477b (tests: use "env" to run commands with temporary env-var > settings, 2014-03-18)
We can use it with test_must_fail, because it takes a command name:
test_must_fail env FOO=BAR whatever-you-would-have-run
But I don't think it works in the general case, as test_commit does not run its arguments. So you'd want something like:
env FOO=BAR test_commit exotic
but of course that doesn't work because "env" can't find the shell function. I think with bash you could do:
export test_commit env FOO=BAR bash -c test_commit exotic
but we can't rely on that.
-Peff