tests: safer declarations of test dependencies
authorStefano Lattarini <stefano.lattarini@gmail.com>
Wed, 4 Jan 2012 10:14:52 +0000 (11:14 +0100)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Fri, 6 Jan 2012 18:03:06 +0000 (19:03 +0100)
commite7de1ef89c049e8fe0cbe92921341b9a57867a92
treec343f02867ca89cf97d6faf6e259d82299f721b9
parent61168e3c4c511e71ae8659388fe7ef8293222dbd
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.
tests/Makefile.am