Re: [PATCH v2 4/4] t/Makefile: introduce TEST_SHELL_PATH
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Dec 8, 2017, 15:08 UTC
- Message-ID
- <alpine.DEB.2.21.1.1712081602570.4318@virtualbox>
- In-Reply-To
- <20171208104722.GD4939@sigill.intra.peff.net>
Hi Peff,
the other three patches look good to me.
On Fri, 8 Dec 2017, Jeff King wrote:
Show 28 quoted lines
> You may want to run the test suite with a different shell > than you use to build Git. For instance, you may build with > SHELL_PATH=/bin/sh (because it's faster, or it's what you > expect to exist on systems where the build will be used) but > want to run the test suite with bash (e.g., since that > allows using "-x" reliably across the whole test suite). > There's currently no good way to do this. > > You might think that doing two separate make invocations, > like: > > make && > make -C t SHELL_PATH=/bin/bash > > would work. And it _almost_ does. The second make will see > our bash SHELL_PATH, and we'll use that to run the > individual test scripts (or tell prove to use it to do so). > So far so good. > > But this breaks down when "--tee" or "--verbose-log" is > used. Those options cause the test script to actually > re-exec itself using $SHELL_PATH. But wait, wouldn't our > second make invocation have set SHELL_PATH correctly in the > environment? > > Yes, but test-lib.sh sources GIT-BUILD-OPTIONS, which we > built during the first "make". And that overrides the > environment, giving us the original SHELL_PATH again.
... and we could simply see whether the environment variable TEST_SHELL_PATH (which we would set in t/Makefile from the passed-in SHELL_PATH) is set, and override it again.
I still think we can do without recording test-phase details in the build-phase (which may, or may not, know what the test-phase wants to do).
In other words, I believe that we can make the invocation you mentioned above work, by touching only t/Makefile (to pass SHELL_PATH as TEST_SHELL_PATH) and t/test-lib.sh (to override the SHELL_PATH from GIT-BUILD-OPTIONS with TEST_SHELL_PATH, if set).
Ciao, Dscho