From: Stefano Lattarini Date: Wed, 4 Jan 2012 10:14:52 +0000 (+0100) Subject: tests: safer declarations of test dependencies X-Git-Tag: ng-0.5a~64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7de1ef89c049e8fe0cbe92921341b9a57867a92;p=thirdparty%2Fautomake.git tests: safer declarations of test dependencies To declare prerequisites common to all the tests, we now prefer to use the special `check_DATA' and `check_SCRIPTS' variables rather than "lazy" dependency declaration like "$(TEST_LOGS): DEPS ..."; this because the latter, allowing run-time overriding of the TEST_LOGS variable, turned out to be subtly incomplete in some situations involving non-trivial inter-test dependencies. For example, if the user issued a: make check TESTS=libtool.test before the `defs-static' file was created (either explicitly or implicitly), a spurious errors followed, along these lines: 1. $(TEST_LOGS) got dynamically defined to `libtool.log'; 2. make saw that, in the Makefile, `libtool.log' was explicitly declared depending on `libtool-macros.log' and `defs-static'; 3. somehow, make considered the dependency on `libtool-macros.log' *before* considering the one on `defs-static' (which BTW is perfectly legitimate on make's part); 4. to satisfy such a dependency, make set out to execute the test `libtool-macros.test' in order to create the file `libtool-macros.log'; 5. since `libtool-macros.log' was *not* in $(TEST_LOGS), it didn't appear to depend on the `defs-static' file, so make didn't consider necessary to build `defs-static' before running the `libtool-macros.test' script; 6. but that script sources `./defs-static' in order to work; thus the test `libtool-macros.test' failed spuriously. * tests/Makefile.am ($(TEST_LOGS)): Remove explicit declaration of dependency on the required files/scripts; instead use ... (check_SCRIPTS, check_DATA): ... these new variables. --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 9c95e29d4..bfd4337b8 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -106,10 +106,8 @@ $(generated_TESTS) $(srcdir)/testsuite-part.am: \ gen-testsuite-part list-of-tests.mk Makefile.am $(handwritten_TESTS) # Static dependencies valid for each test case. -$(TEST_LOGS): defs defs-static aclocal-$(APIVERSION) automake-$(APIVERSION) -# FIXME: this should be made more granular once we have a cleaner -# subdivision of the tests. -$(TEST_LOGS): plain-functions.sh tap-functions.sh +check_SCRIPTS = aclocal-$(APIVERSION) automake-$(APIVERSION) +check_DATA = defs defs-static plain-functions.sh tap-functions.sh EXTRA_DIST += tap-functions.sh plain-functions.sh # Few more static dependencies.