autoconf.info: Making testsuite Scripts

Go backward to testsuite Invocation
Go up to Using Autotest
Go to the top op autoconf

Making `testsuite' Scripts

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'.  *Note
     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!
   - Invoke `AC_CONFIG_TESTDIR'.
      - Macro: AC_CONFIG_TESTDIR (DIRECTORY, [TEST-PATH = `DIRECTORY'])
          An Autotest test suite is to be configured in DIRECTORY.  This
          macro requires the instantiation of `DIRECTORY/atconfig' from
          `DIRECTORY/atconfig.in', and sets the default `AUTOTEST_PATH'
          to TEST-PATH (*note testsuite Invocation::).
   - Still within `configure.ac', as appropriate, ensure that some
     `AC_CONFIG_FILES' command includes substitution for
     `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.