Node:Making testsuite Scripts, Previous:testsuite Invocation, Up:Using Autotest
testsuite ScriptsFor putting Autotest into movement, you need some configuration and
Makefile machinery. We recommend, at least if your package uses deep or
shallow hierarchies, that you use tests/ as the name of the
directory holding all your tests and their Makefile. Here is a
check list of things to do.
package.m4, which defines the
identity of the package. It must define AT_PACKAGE_STRING, the
full signature of the package, and AT_PACKAGE_BUGREPORT, the
address to which bug reports should be sent. For sake of completeness,
we suggest that you also define AT_PACKAGE_NAME,
AT_PACKAGE_TARNAME, and AT_PACKAGE_VERSION.
See Initializing configure, for a description of these variables. We
suggest the following Makefile excerpt:
$(srcdir)/package.m4: $(top_srcdir)/configure.ac
{ \
echo '# Signature of the current package.'; \
echo 'm4_define([AT_PACKAGE_NAME], [@PACKAGE_NAME@])'; \
echo 'm4_define([AT_PACKAGE_TARNAME], [@PACKAGE_TARNAME@])'; \
echo 'm4_define([AT_PACKAGE_VERSION], [@PACKAGE_VERSION@])'; \
echo 'm4_define([AT_PACKAGE_STRING], [@PACKAGE_STRING@])'; \
echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
} >$(srcdir)/package.m4
Be sure to distribute package.m4 and to put it into the source
hierarchy: the test suite ought to be shipped!
AT_CONFIG macro from within file configure.ac.
This macro accepts one argument, which is the directory, relative to the
test directory, where the executables are prepared.
configure.ac, ensure that some
AC_CONFIG_FILES command includes substitution for
tests/atconfig and also, as appropriate, tests/atlocal.
tests/Makefile.in should be modified so the validation in
your package is triggered by make check. An example is provided
below.
With Automake, here is a minimal example about how to link make
check with a validation suite.
EXTRA_DIST = testsuite.at testsuite
TESTSUITE = $(srcdir)/testsuite
check-local: atconfig atlocal $(TESTSUITE)
$(SHELL) $(TESTSUITE)
AUTOTEST = $(AUTOM4TE) --language=autotest
$(TESTSUITE): $(srcdir)/testsuite.at
$(AUTOTEST) -I $(srcdir) $.at -o $.tmp
mv $.tmp $
You might want to list explicitly the dependencies, i.e., the list of
the files testsuite.at includes.
With strict Autoconf, you might need to add lines inspired from the
following:
subdir = tests
atconfig: $(top_builddir)/config.status
cd $(top_builddir) && \
$(SHELL) ./config.status $(subdir)/$
atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
cd $(top_builddir) && \
$(SHELL) ./config.status $(subdir)/$
and manage to have atconfig.in and $(EXTRA_DIST)
distributed.