automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] {master} tests: safer declarations of test dependencies


From: Stefano Lattarini
Subject: [PATCH] {master} tests: safer declarations of test dependencies
Date: Wed, 4 Jan 2012 11:17:49 +0100

I will push this in a couple of days if there is not objection.

Regards,
  Stefano

-*-*-*-

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.
---
 tests/Makefile.am |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 9c95e29..bfd4337 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.
-- 
1.7.7.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]