On Monday 20 June 2011, Stefano Lattarini wrote: > > [SNIP] > > To quote from the added NEWS entry: > > - The parallel-tests driver is now implemented (partly at least) with > the help of automake-provided auxiliary scripts (e.g., `test-driver'), > instead of relying entirely on code in the generated Makefile.in. > This has two noteworthy implications. The first one is that projects > using the `parallel-tests' option should now either run automake with > the `--add-missing' option, or manually copy the `test-driver' script > into their tree. The second, and more important, implication is that > now shell functions and non-environmental shell variables defined in > TESTS_ENVIRONMENT are not anymore available in LOG_COMPILER and > <ext>_LOG_COMPILER. > Well, no, this is not correct. The real important "second implication" here is that one cannot put test runners in TESTS_ENVIRONMENT anymore (and this is what had broken coreutils' testsuite), nor use shell functions or generic shell code as LOG_COMPILER. But stuff set in TESTS_ENVIRONMENT, even if not exported, can still be used in LOG_COMPILER and LOG_FLAGS. This is a nice feature to have indeed, and one we shouldn't break; I'll thus fix the NEWS entry accordingly, and add the attached test to master, to ensure that we don't break that feature.
Here is what I plan to squash in to NEWS: -*-*-*- diff --git a/NEWS b/NEWS index 394f6b2..939f79c 100644 --- a/NEWS +++ b/NEWS @@ -20,12 +20,37 @@ New in 1.11a: using the `parallel-tests' option should now either run automake with the `--add-missing' option, or manually copy the `test-driver' script into their tree. The second, and more important, implication is that - now shell functions and non-environmental shell variables defined in - TESTS_ENVIRONMENT are not anymore available in LOG_COMPILER and - <ext>_LOG_COMPILER. For example, it is now no more possible to define - a shell function, say `custom_test_runner', in TESTS_ENVIRONMENT, and - then setting "LOG_COMPILER = custom_test_runner" in the Makefile.am in - oder to use that function to run the tests. + now, when the `parallel-tests' option is in use, TESTS_ENVIRONMENT can + not be used anymore to define a test runner, and the command specified + in LOG_COMPILER (and <ext>_LOG_COMPILER) must be a *real* executable + program or script. For example, this is still a valid usage (albeit + a little contorted): + + TESTS_ENVIRONMENT = \ + if test -n '$(STRICT_TESTS)'; then \ + maybe_errexit='-e'; \ + else \ + maybe_errexit=''; \ + fi; + LOG_COMPILER = $(SHELL) $$maybe_errexit + + while this is not anymore: + + TESTS_ENVIRONMENT = \ + $(SHELL) `test -n '$(STRICT_TESTS_CHECKING)' && echo ' -e'` + + neither is this: + + TESTS_ENVIRONMENT = \ + run_with_perl_or_shell () \ + { \ + if grep -q '^#!.*perl' $$1; then + $(PERL) $$1; \ + else \ + $(SHELL) $$1; \ + fi; \ + } + LOG_COMPILER = run_with_per_or_shell * WARNING: Future backward-incompatibilities! -*-*-*- A similar improvement to the manual will have to follow, of course. Thanks, and sorry for the noise, Stefano
tests-environment-and-log-compiler.test
Description: application/shellscript