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.