[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
parallel-tests: dependencies between tests
From: |
Ralf Wildenhues |
Subject: |
parallel-tests: dependencies between tests |
Date: |
Fri, 10 Apr 2009 14:05:19 +0200 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
Hello,
another API question turned up:
do we want the developer to specify dependencies between tests as
foo.log: bar.log
or as
foo_log_DEPENDENCIES = bar.log
There are reasons for^W^Wproblems with both:
- *_DEPENDENCIES can also work when tests do not use a suffix listed in
TEST_EXTENSIONS. Remember that Automake does not output its own rules
for rules it finds overridden, and that for this decision, it does not
distinguish between rules and dependency statements without commands.
- *_DEPENDENCIES is however difficult to realize for tests that are
@substituted@ (and thus necessarily have a known extension, but we
may not know which names to match the `*' in `*_DEPENDENCIES' with).
The current realization that I have in mind would be to add them would
be to let each target rule depend by default:
foo.log: foo $(foo_log_DEPENDENCIES)
...
and to add extra rules on a as-seen basis for inference rules: if, for
bar.test and `TEST_EXTENSIONS = .test', we see a definition of
bar_log_DEPENDENCIES, we output both
.test.log:
...
bar.test: $(bar_log_DEPENDENCIES)
For `TESTS = @substed@', we'd however have to invent literal EXTRA_TESTS
or so now, so that we can reliably find all possible <LOG>_DEPENDENCIES
variables. That seems like a step in the wrong direction.
The alternative would be the restricting doc patch below; I am
considering adding that now, and deferring the rest until a later
release.
Comments welcome!
Thanks,
Ralf
manual: Add note about parallelism and tests ordering.
* doc/automake.texi (Simple Tests using parallel-tests):
Dependencies between test logs work for tests with known
extensions only. Hint that tests should be prepared to be run
in parallel.
diff --git a/doc/automake.texi b/doc/automake.texi
index 06d1806..1f6e935 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -8652,7 +8652,13 @@ foo-execute.log: foo-compile.log
@noindent
Please note that this ordering ignores the @emph{results} of required
tests, thus the test @file{foo-execute.test} is run even if the test
address@hidden failed or was skipped beforehand.
address@hidden failed or was skipped beforehand. Further,
+please note that specifying such dependencies currently works only for
+tests that end in one of the suffixes listed in @code{TEST_EXTENSIONS}.
+
+Tests without such specified dependencies may be run concurrently with
+parallel @command{make address@hidden, so be sure they are prepared for
+concurrent execution.
@cindex Unit tests
The combination of lazy test execution and correct dependencies between
- parallel-tests: dependencies between tests,
Ralf Wildenhues <=