Automake supports two forms of test suites.
If the variable
TESTS is defined, its value is taken to be a list
of programs to run in order to do the testing. The programs can either
be derived objects or source objects; the generated rule will look both
srcdir and `.'. Programs needing data files should look
for them in
srcdir (which is both an environment variable and a
make variable) so they work when building in a separate directory
(see section `Build Directories' in The Autoconf Manual), and in particular for the
(see section What Goes in a Distribution).
The number of failures will be printed at the end of the run. If a given test program exits with a status of 77, then its result is ignored in the final count. This feature allows non-portable tests to be ignored in environments where they don't make sense.
TESTS_ENVIRONMENT can be used to set environment
variables for the test run; the environment variable
set in the rule. If all your test programs are scripts, you can also
TESTS_ENVIRONMENT to an invocation of the shell (e.g.
`$(SHELL) -x'); this can be useful for debugging the tests.
Automake ensures that each program listed in
TESTS is built
before any tests are run; you can list both source and derived programs
TESTS. For instance, you might want to run a C program as a
test. To do this you would list its name in
TESTS and also in
check_PROGRAMS, and then specify it as you would any other
If `dejagnu' appears in
AUTOMAKE_OPTIONS, then a
dejagnu-based test suite is assumed. The variable
DEJATOOL is a list of names which are passed, one at a time, as
--tool argument to
runtest invocations; it defaults to
the name of the package.
also be overridden to provide project-specific values. For instance,
you will need to do this if you are testing a compiler toolchain,
because the default values do not take into account host and target
The contents of the variable
RUNTESTFLAGS are passed to the
runtest invocation. This is considered a "user variable"
(see section Variables reserved for the user). If you need to set
runtest flags in
`Makefile.am', you can use
In either case, the testing is done via `make check'.