For 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.
Make sure to create the file 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. the section called “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!
Use the 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.
Still within configure.ac, ensure that some AC_CONFIG_FILES command includes substitution for tests/atconfig and also, as appropriate, tests/atlocal.
The 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.