From 8ab0c9494312a1d33c5a47c5cdcc6831ebab6dfe Mon Sep 17 00:00:00 2001 From: Stefano Lattarini Date: Sat, 3 Sep 2011 21:03:36 +0200 Subject: [PATCH] installcheck: support it in our own testsuite * NEWS: Update. * tests/defs-static.in ($am_running_installcheck): New variable. Initialize it to a default of "no", and sanity-check its value. ($am_datadir, $am_docdir, $am_automake_acdir, $am_system_acdir, $am_bindir, $am_scriptdir, $am_pkgvdir): New variables, initialized from AC_SUBST'ed values which are adaptively chosen depending on whether the testsuite is running in "simple" mode or in "installcheck" mode. ($MISSING): Remove, it's not really required by the testsuite. ($PATH): Update using `$am_bindir', not `$testbuilddir'. * Makefile.am (installcheck-local): New target. * lib/Automake/tests/Makefile.am (installcheck-local): New target. (AM_TESTS_ENVIRONMENT, AM_PL_LOG_FLAGS): Adaptively choose the `-I' flags for perl based on whether the tests are being run by "make check" or "make installcheck". * tests/Makefile.am (installcheck-local): New target. (defs-static): Generate it at make time, not at configure time, in order to correctly resolve all the indirections in the AC_SUBST'd variables; done with the help of ... (do_subst): ... this new macro. (EXTRA_DIST): Explicitly distribute `defs-static.in'. (CLEANFILES): Remove `defs-static'. * configure.ac (AC_CONFIG_FILES): Remove `tests/defs-static'. (AC_SUBST): Substitute also `automake_acdir', `system_acdir', `scriptdir' and `amdir' to proper values. * lib/Makefile.am (scriptdir): Don't explicitly define anymore. * lib/am/Makefile.am (amdir): Likewise. * m4/acdir/dirlist: Remove, it's not needed anymore. Instead use ... * m4/acdir/.placeholder: ... this file. * m4/Makefile.am (EXTRA_DIST): Update. (automake_acdir, system_acdir): Don't explicitly define anymore. * tests/aclocal-print-acdir.test: Use new `$am_...dir' variables, instead of hard-coding values with $testsrcdir and $testbuilddir, to test more faithfully under "make installcheck". * tests/amhello-binpkg.test: Likewise. * tests/amhello-cflags.test: Likewise. * tests/amhello-cross-compile.test: Likewise. * tests/ansi2knr-no-more.test: Likewise. * tests/autodist-stamp-vti.test: Likewise. * tests/auxdir.test: Likewise. * tests/check2.test: Likewise. * tests/copy.test: Likewise. * tests/multlib.test: Likewise. * tests/obsolete.test: Likewise. * tests/parallel-tests-interrupt.test: Likewise. * tests/repeated-options.test: Likewise. * tests/suffix5.test: Likewise. * tests/tap-doc2.test: Likewise. * tests/txinfo22.test: Likewise. * tests/vtexi3.test: Likewise. * tests/defs: Likewise. Also, print the values of `$using_tap' and `$am_running_installcheck', to simplify debugging, and do some related code movings and tweakings. * tests/aclocal3.test: Update to avoid possible spurious failures when running under "make installcheck". * tests/warnings-unknown.test: Likewise. * tests/location.test: Likewise, and improve debugging input since we are at it. * tests/acloca10.test: Adapt and tweak to work also during a "make installcheck", and not to require a pre-populated `dirlist' file. * tests/acloca18.test: Likewise. * tests/dirlist2.test: Likewise. * tests/dirlist.test: Likewise, and remove an obsolete comment. * tests/README: Update. * tests/dirlist-abspath.test: New test. * tests/list-of-tests.mk: Update. --- ChangeLog | 72 ++++++++++++++++++++++++++++ Makefile.am | 4 ++ Makefile.in | 19 ++++++-- NEWS | 2 + configure | 16 +++++-- configure.ac | 6 ++- doc/Makefile.in | 4 ++ lib/Automake/Makefile.in | 4 ++ lib/Automake/tests/Makefile.am | 15 ++++-- lib/Automake/tests/Makefile.in | 30 ++++++++---- lib/Makefile.am | 1 - lib/Makefile.in | 5 +- lib/am/Makefile.am | 2 - lib/am/Makefile.in | 5 +- m4/Makefile.am | 5 +- m4/Makefile.in | 8 ++-- m4/acdir/.placeholder | 2 + m4/acdir/dirlist | 4 -- tests/Makefile.am | 47 +++++++++++++++++++ tests/Makefile.in | 75 +++++++++++++++++++++++++----- tests/README | 7 +++ tests/acloca10.test | 12 +++-- tests/acloca18.test | 6 ++- tests/aclocal-print-acdir.test | 4 +- tests/aclocal3.test | 8 +++- tests/amhello-binpkg.test | 2 +- tests/amhello-cflags.test | 2 +- tests/amhello-cross-compile.test | 4 +- tests/ansi2knr-no-more.test | 2 +- tests/autodist-stamp-vti.test | 2 +- tests/auxdir.test | 2 +- tests/check2.test | 2 +- tests/copy.test | 4 +- tests/defs | 40 +++++++++------- tests/defs-static.in | 37 +++++++++++++-- tests/depmod.tap | 2 +- tests/dirlist-abspath.test | 42 +++++++++++++++++ tests/dirlist.test | 6 +-- tests/dirlist2.test | 9 +++- tests/list-of-tests.mk | 1 + tests/location.test | 27 +++++++++-- tests/multlib.test | 3 +- tests/obsolete.test | 2 +- tests/parallel-tests-interrupt.tap | 2 +- tests/repeated-options.test | 2 +- tests/suffix5.test | 2 +- tests/tap-doc2.test | 2 +- tests/txinfo22.test | 2 +- tests/vtexi3.test | 2 +- tests/warnings-unknown.test | 6 ++- 50 files changed, 460 insertions(+), 110 deletions(-) create mode 100644 m4/acdir/.placeholder delete mode 100644 m4/acdir/dirlist create mode 100755 tests/dirlist-abspath.test diff --git a/ChangeLog b/ChangeLog index 1e287a25e..757e1e3f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,75 @@ +2011-09-08 Stefano Lattarini + + installcheck: support it in our own testsuite + * NEWS: Update. + * tests/defs-static.in ($am_running_installcheck): New variable. + Initialize it to a default of "no", and sanity-check its value. + ($am_datadir, $am_docdir, $am_automake_acdir, $am_system_acdir, + $am_bindir, $am_scriptdir, $am_pkgvdir): New variables, + initialized from AC_SUBST'ed values which are adaptively chosen + depending on whether the testsuite is running in "simple" mode + or in "installcheck" mode. + ($MISSING): Remove, it's not really required by the testsuite. + ($PATH): Update using `$am_bindir', not `$testbuilddir'. + * Makefile.am (installcheck-local): New target. + * lib/Automake/tests/Makefile.am (installcheck-local): New target. + (AM_TESTS_ENVIRONMENT, AM_PL_LOG_FLAGS): Adaptively choose the + `-I' flags for perl based on whether the tests are being run by + "make check" or "make installcheck". + * tests/Makefile.am (installcheck-local): New target. + (defs-static): Generate it at make time, not at configure time, + in order to correctly resolve all the indirections in the + AC_SUBST'd variables; done with the help of ... + (do_subst): ... this new macro. + (EXTRA_DIST): Explicitly distribute `defs-static.in'. + (CLEANFILES): Remove `defs-static'. + * configure.ac (AC_CONFIG_FILES): Remove `tests/defs-static'. + (AC_SUBST): Substitute also `automake_acdir', `system_acdir', + `scriptdir' and `amdir' to proper values. + * lib/Makefile.am (scriptdir): Don't explicitly define anymore. + * lib/am/Makefile.am (amdir): Likewise. + * m4/acdir/dirlist: Remove, it's not needed anymore. Instead + use ... + * m4/acdir/.placeholder: ... this file. + * m4/Makefile.am (EXTRA_DIST): Update. + (automake_acdir, system_acdir): Don't explicitly define anymore. + * tests/aclocal-print-acdir.test: Use new `$am_...dir' variables, + instead of hard-coding values with $testsrcdir and $testbuilddir, + to test more faithfully under "make installcheck". + * tests/amhello-binpkg.test: Likewise. + * tests/amhello-cflags.test: Likewise. + * tests/amhello-cross-compile.test: Likewise. + * tests/ansi2knr-no-more.test: Likewise. + * tests/autodist-stamp-vti.test: Likewise. + * tests/auxdir.test: Likewise. + * tests/check2.test: Likewise. + * tests/copy.test: Likewise. + * tests/multlib.test: Likewise. + * tests/obsolete.test: Likewise. + * tests/parallel-tests-interrupt.test: Likewise. + * tests/repeated-options.test: Likewise. + * tests/suffix5.test: Likewise. + * tests/tap-doc2.test: Likewise. + * tests/txinfo22.test: Likewise. + * tests/vtexi3.test: Likewise. + * tests/defs: Likewise. Also, print the values of `$using_tap' + and `$am_running_installcheck', to simplify debugging, and do + some related code movings and tweakings. + * tests/aclocal3.test: Update to avoid possible spurious failures + when running under "make installcheck". + * tests/warnings-unknown.test: Likewise. + * tests/location.test: Likewise, and improve debugging input since + we are at it. + * tests/acloca10.test: Adapt and tweak to work also during a + "make installcheck", and not to require a pre-populated `dirlist' + file. + * tests/acloca18.test: Likewise. + * tests/dirlist2.test: Likewise. + * tests/dirlist.test: Likewise, and remove an obsolete comment. + * tests/README: Update. + * tests/dirlist-abspath.test: New test. + * tests/list-of-tests.mk: Update. + 2011-09-08 Stefano Lattarini maintcheck: fix spurious failures diff --git a/Makefile.am b/Makefile.am index 10d2de238..6c8eff450 100644 --- a/Makefile.am +++ b/Makefile.am @@ -103,6 +103,10 @@ automake aclocal: Makefile INSTALL: lib/INSTALL $(AM_V_GEN)cp $(srcdir)/lib/INSTALL $@ +# Run the testsuite with the installed aclocal and automake. +installcheck-local: + am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check + ## recheck: convenience proxy target for the test suites. .PHONY: recheck recheck: diff --git a/Makefile.in b/Makefile.in index 1c8f2f0a1..07f9808dc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -212,6 +212,8 @@ am_AUTOUPDATE = @am_AUTOUPDATE@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ +amdir = @amdir@ +automake_acdir = @automake_acdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -246,10 +248,12 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ +scriptdir = @scriptdir@ sh_errexit_works = @sh_errexit_works@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ +system_acdir = @system_acdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ @@ -914,7 +918,7 @@ install-ps: install-ps-recursive install-ps-am: -installcheck-am: +installcheck-am: installcheck-local maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) @@ -954,10 +958,11 @@ uninstall-am: uninstall-binSCRIPTS install-exec-am install-exec-hook install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-binSCRIPTS uninstall-hook + installcheck installcheck-am installcheck-local installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am uninstall-binSCRIPTS \ + uninstall-hook install-exec-hook: @@ -989,6 +994,10 @@ automake aclocal: Makefile INSTALL: lib/INSTALL $(AM_V_GEN)cp $(srcdir)/lib/INSTALL $@ +# Run the testsuite with the installed aclocal and automake. +installcheck-local: + am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check + .PHONY: recheck recheck: @failcom='exit 1'; \ diff --git a/NEWS b/NEWS index d885b5431..fa0a358cb 100644 --- a/NEWS +++ b/NEWS @@ -154,6 +154,8 @@ Bugs fixed in 1.11a: * Long standing bugs: + - Automake's own build system finally have a real "installcheck" target. + - Automake now warns about more primary/directory invalid combinations, such as "doc_LIBRARIES" or "pkglib_PROGRAMS". diff --git a/configure b/configure index 499015d83..489d7fa6e 100755 --- a/configure +++ b/configure @@ -578,6 +578,10 @@ HELP2MAN TEX PERL_THREADS PERL +system_acdir +automake_acdir +amdir +scriptdir pkgvdatadir APIVERSION AM_BACKSLASH @@ -2355,9 +2359,16 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' APIVERSION=`echo "$VERSION" | sed -e 's/^\([0-9]*\.[0-9]*[a-z]*\).*$/\1/'` -# A versioned directory, defined here for convenience. pkgvdatadir="\${datadir}/$PACKAGE-$APIVERSION" +scriptdir="\${pkgvdatadir}" + +amdir="\${pkgvdatadir}/am" + +automake_acdir="\${datadir}/aclocal-$APIVERSION" + +system_acdir="\${datadir}/aclocal" + # $AUTOMAKE and $ACLOCAL are always run after a `cd $top_srcdir', # hence `.' is really what we want for perllibdir, libdir, and acdir. @@ -2832,7 +2843,7 @@ $as_echo "$as_me: WARNING: \`cd tests && ${MAKE-make} clean-local-check'" >&2;} sh_errexit_works=$am_cv_sh_errexit_works -ac_config_files="$ac_config_files Makefile doc/Makefile lib/Automake/Makefile lib/Automake/tests/Makefile lib/Makefile lib/am/Makefile m4/Makefile tests/Makefile tests/defs-static" +ac_config_files="$ac_config_files Makefile doc/Makefile lib/Automake/Makefile lib/Automake/tests/Makefile lib/Makefile lib/am/Makefile m4/Makefile tests/Makefile" ac_config_links="$ac_config_links tests/defs:tests/defs" @@ -3589,7 +3600,6 @@ do "lib/am/Makefile") CONFIG_FILES="$CONFIG_FILES lib/am/Makefile" ;; "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "tests/defs-static") CONFIG_FILES="$CONFIG_FILES tests/defs-static" ;; "tests/defs") CONFIG_LINKS="$CONFIG_LINKS tests/defs:tests/defs" ;; "tests/aclocal-${APIVERSION}") CONFIG_FILES="$CONFIG_FILES tests/aclocal-${APIVERSION}:tests/aclocal.in" ;; "tests/automake-${APIVERSION}") CONFIG_FILES="$CONFIG_FILES tests/automake-${APIVERSION}:tests/automake.in" ;; diff --git a/configure.ac b/configure.ac index cf3df4d6a..54f39e5d2 100644 --- a/configure.ac +++ b/configure.ac @@ -51,8 +51,11 @@ AM_INIT_AUTOMAKE([1.10a dist-bzip2 filename-length-max=99 color-tests APIVERSION=`echo "$VERSION" | sed -e 's/^\([[0-9]]*\.[[0-9]]*[[a-z]]*\).*$/\1/'` AC_SUBST([APIVERSION]) -# A versioned directory, defined here for convenience. AC_SUBST([pkgvdatadir], ["\${datadir}/$PACKAGE-$APIVERSION"]) +AC_SUBST([scriptdir], ["\${pkgvdatadir}"]) +AC_SUBST([amdir], ["\${pkgvdatadir}/am"]) +AC_SUBST([automake_acdir], ["\${datadir}/aclocal-$APIVERSION"]) +AC_SUBST([system_acdir], ["\${datadir}/aclocal"]) # $AUTOMAKE and $ACLOCAL are always run after a `cd $top_srcdir', # hence `.' is really what we want for perllibdir, libdir, and acdir. @@ -209,7 +212,6 @@ AC_CONFIG_FILES([ lib/am/Makefile m4/Makefile tests/Makefile - tests/defs-static ]) AC_CONFIG_LINKS([tests/defs:tests/defs]) AC_CONFIG_FILES([tests/aclocal-${APIVERSION}:tests/aclocal.in], diff --git a/doc/Makefile.in b/doc/Makefile.in index 1e539707d..7cd5e30e3 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -196,6 +196,8 @@ am_AUTOUPDATE = @am_AUTOUPDATE@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ +amdir = @amdir@ +automake_acdir = @automake_acdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -230,10 +232,12 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ +scriptdir = @scriptdir@ sh_errexit_works = @sh_errexit_works@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ +system_acdir = @system_acdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ diff --git a/lib/Automake/Makefile.in b/lib/Automake/Makefile.in index 76c82df6a..80c924889 100644 --- a/lib/Automake/Makefile.in +++ b/lib/Automake/Makefile.in @@ -195,6 +195,8 @@ am_AUTOUPDATE = @am_AUTOUPDATE@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ +amdir = @amdir@ +automake_acdir = @automake_acdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -229,10 +231,12 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ +scriptdir = @scriptdir@ sh_errexit_works = @sh_errexit_works@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ +system_acdir = @system_acdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ diff --git a/lib/Automake/tests/Makefile.am b/lib/Automake/tests/Makefile.am index c6254a347..2c33a76e2 100644 --- a/lib/Automake/tests/Makefile.am +++ b/lib/Automake/tests/Makefile.am @@ -1,7 +1,7 @@ ## Process this file with automake to create Makefile.in -# Copyright (C) 2002, 2003, 2008, 2009, 2010 Free Software Foundation, -# Inc. +# Copyright (C) 2002, 2003, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,7 +17,12 @@ # along with this program. If not, see . PL_LOG_COMPILER = $(PERL) -AM_PL_LOG_FLAGS = -Mstrict -I ../.. -I $(top_srcdir)/lib -w +AM_TESTS_ENVIRONMENT = \ + case $$am_running_installcheck in \ + yes) am_pl_I_flags='-I $(pkgvdatadir)';; \ + *) am_pl_I_flags='-I ../.. -I $(top_srcdir)/lib';; \ + esac; +AM_PL_LOG_FLAGS = -Mstrict -w $$am_pl_I_flags TEST_EXTENSIONS = .pl TESTS = \ @@ -45,3 +50,7 @@ Version3.pl EXTRA_DIST = $(TESTS) include $(top_srcdir)/CheckListOfTests.am + +# Run the testsuite with the installed aclocal and automake. +installcheck-local: + am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check diff --git a/lib/Automake/tests/Makefile.in b/lib/Automake/tests/Makefile.in index 89ec5b2fb..c596a1c2e 100644 --- a/lib/Automake/tests/Makefile.in +++ b/lib/Automake/tests/Makefile.in @@ -15,8 +15,8 @@ @SET_MAKE@ -# Copyright (C) 2002, 2003, 2008, 2009, 2010 Free Software Foundation, -# Inc. +# Copyright (C) 2002, 2003, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -234,6 +234,8 @@ am_AUTOUPDATE = @am_AUTOUPDATE@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ +amdir = @amdir@ +automake_acdir = @automake_acdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -268,16 +270,24 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ +scriptdir = @scriptdir@ sh_errexit_works = @sh_errexit_works@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ +system_acdir = @system_acdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ PL_LOG_COMPILER = $(PERL) -AM_PL_LOG_FLAGS = -Mstrict -I ../.. -I $(top_srcdir)/lib -w +AM_TESTS_ENVIRONMENT = \ + case $$am_running_installcheck in \ + yes) am_pl_I_flags='-I $(pkgvdatadir)';; \ + *) am_pl_I_flags='-I ../.. -I $(top_srcdir)/lib';; \ + esac; + +AM_PL_LOG_FLAGS = -Mstrict -w $$am_pl_I_flags TEST_EXTENSIONS = .pl TESTS = \ Condition.pl \ @@ -649,7 +659,7 @@ install-ps: install-ps-am install-ps-am: -installcheck-am: +installcheck-am: installcheck-local maintainer-clean: maintainer-clean-am -rm -f Makefile @@ -679,10 +689,10 @@ uninstall-am: install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am recheck recheck-html \ - uninstall uninstall-am + install-strip installcheck installcheck-am installcheck-local \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am recheck \ + recheck-html uninstall uninstall-am .PHONY: maintainer-check-list-of-tests @@ -728,6 +738,10 @@ clean-local: clean-maintcheck-testslist-tmp clean-maintcheck-testslist-tmp: rm -f $(am__tmk) $(am__tfs) $(am__tdf) +# Run the testsuite with the installed aclocal and automake. +installcheck-local: + am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/lib/Makefile.am b/lib/Makefile.am index 237fe615f..b48428da7 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -25,7 +25,6 @@ dist_pkgvdata_DATA = COPYING INSTALL texinfo.tex config-ml.in ## These must all be executable when installed. However, if we use ## _SCRIPTS, then the program transform will be applied, which is not ## what we want. So we make them executable by hand. -scriptdir = $(pkgvdatadir) dist_script_DATA = \ config.guess \ config.sub \ diff --git a/lib/Makefile.in b/lib/Makefile.in index d99ecfc84..e7a68772e 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -198,6 +198,8 @@ am_AUTOUPDATE = @am_AUTOUPDATE@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ +amdir = @amdir@ +automake_acdir = @automake_acdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -232,17 +234,18 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ +scriptdir = @scriptdir@ sh_errexit_works = @sh_errexit_works@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ +system_acdir = @system_acdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = Automake am dist_pkgvdata_DATA = COPYING INSTALL texinfo.tex config-ml.in -scriptdir = $(pkgvdatadir) dist_script_DATA = \ config.guess \ config.sub \ diff --git a/lib/am/Makefile.am b/lib/am/Makefile.am index 037a4aef1..e09a3706b 100644 --- a/lib/am/Makefile.am +++ b/lib/am/Makefile.am @@ -18,8 +18,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -amdir = $(pkgvdatadir)/am - dist_am_DATA = \ check.am \ check2.am \ diff --git a/lib/am/Makefile.in b/lib/am/Makefile.in index 9bbecb9d0..94a8ce00a 100644 --- a/lib/am/Makefile.in +++ b/lib/am/Makefile.in @@ -155,6 +155,8 @@ am_AUTOUPDATE = @am_AUTOUPDATE@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ +amdir = @amdir@ +automake_acdir = @automake_acdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -189,15 +191,16 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ +scriptdir = @scriptdir@ sh_errexit_works = @sh_errexit_works@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ +system_acdir = @system_acdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -amdir = $(pkgvdatadir)/am dist_am_DATA = \ check.am \ check2.am \ diff --git a/m4/Makefile.am b/m4/Makefile.am index 143df71f0..a6491cfe7 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -18,9 +18,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -automake_acdir = $(datadir)/aclocal-$(APIVERSION) -system_acdir = $(datadir)/aclocal - dist_automake_ac_DATA = \ $(top_srcdir)/m4/amversion.m4 \ as.m4 \ @@ -63,7 +60,7 @@ vala.m4 # So that $(system_acdir) will be created by "make install". dist_system_ac_DATA = -EXTRA_DIST = acdir/dirlist amversion.in +EXTRA_DIST = acdir/.placeholder amversion.in # We build amversion.m4 here, instead of from config.status, # because config.status is rerun each time one of configure's diff --git a/m4/Makefile.in b/m4/Makefile.in index fe4725650..a7fc0ebc7 100644 --- a/m4/Makefile.in +++ b/m4/Makefile.in @@ -156,6 +156,8 @@ am_AUTOUPDATE = @am_AUTOUPDATE@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ +amdir = @amdir@ +automake_acdir = @automake_acdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -190,16 +192,16 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ +scriptdir = @scriptdir@ sh_errexit_works = @sh_errexit_works@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ +system_acdir = @system_acdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -automake_acdir = $(datadir)/aclocal-$(APIVERSION) -system_acdir = $(datadir)/aclocal dist_automake_ac_DATA = \ $(top_srcdir)/m4/amversion.m4 \ as.m4 \ @@ -242,7 +244,7 @@ vala.m4 # So that $(system_acdir) will be created by "make install". dist_system_ac_DATA = -EXTRA_DIST = acdir/dirlist amversion.in +EXTRA_DIST = acdir/.placeholder amversion.in all: all-am .SUFFIXES: diff --git a/m4/acdir/.placeholder b/m4/acdir/.placeholder new file mode 100644 index 000000000..8dd7f6751 --- /dev/null +++ b/m4/acdir/.placeholder @@ -0,0 +1,2 @@ +This file is here only to ensure the directory containing it exists +in the git repository, and goes in the distribution tarball. diff --git a/m4/acdir/dirlist b/m4/acdir/dirlist deleted file mode 100644 index 82339e48a..000000000 --- a/m4/acdir/dirlist +++ /dev/null @@ -1,4 +0,0 @@ -# This file is used by the testsuite (dirlist*.test) -# it should not be installed -./dirlist-test -./dirlist2*-test diff --git a/tests/Makefile.am b/tests/Makefile.am index ad80a1ca4..50c8ca994 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -103,6 +103,49 @@ $(TEST_LOGS): defs defs-static aclocal-$(APIVERSION) automake-$(APIVERSION) $(TEST_LOGS): plain-functions.sh tap-functions.sh EXTRA_DIST += tap-functions.sh plain-functions.sh +# Keep in sync with AC_SUBST'd stuff in defs-static.in. +do_subst = sed \ + -e 's|@abs_srcdir[@]|$(abs_srcdir)|g' \ + -e 's|@abs_top_srcdir[@]|$(abs_top_srcdir)|g' \ + -e 's|@abs_builddir[@]|$(abs_builddir)|g' \ + -e 's|@prefix[@]|$(prefix)|g' \ + -e 's|@amdir[@]|$(amdir)|g' \ + -e 's|@bindir[@]|$(bindir)|g' \ + -e 's|@datadir[@]|$(datadir)|g' \ + -e 's|@docdir[@]|$(docdir)|g' \ + -e 's|@automake_acdir[@]|$(automake_acdir)|g' \ + -e 's|@system_acdir[@]|$(system_acdir)|g' \ + -e 's|@scriptdir[@]|$(scriptdir)|g' \ + -e 's|@pkgvdatadir[@]|$(pkgvdatadir)|g' \ + -e 's|@host_alias[@]|$(host_alias)|g' \ + -e 's|@build_alias[@]|$(build_alias)|g' \ + -e 's|@APIVERSION[@]|$(APIVERSION)|g' \ + -e 's|@PATH_SEPARATOR[@]|$(PATH_SEPARATOR)|g' \ + -e 's|@SHELL[@]|$(SHELL)|g' \ + -e 's|@PERL[@]|$(PERL)|g' \ + -e 's|@EGREP[@]|$(EGREP)|g' \ + -e 's|@FGREP[@]|$(FGREP)|g' \ + -e 's|@TEX[@]|$(TEX)|g' \ + -e 's|@MODIFICATION_DELAY[@]|$(MODIFICATION_DELAY)|g' \ + -e 's|@am_AUTOCONF[@]|$(am_AUTOCONF)|g' \ + -e 's|@am_AUTOM4TE[@]|$(am_AUTOM4TE)|g' \ + -e 's|@am_AUTORECONF[@]|$(am_AUTORECONF)|g' \ + -e 's|@am_AUTOHEADER[@]|$(am_AUTOHEADER)|g' \ + -e 's|@am_AUTOUPDATE[@]|$(am_AUTOUPDATE)|g' \ + -e 's|@sh_errexit_works[@]|$(sh_errexit_works)|g' \ + -e 's|@configure_input[@]|Generated from $@.in. DO NOT EDIT BY HAND!|' + +defs-static: defs-static.in + $(AM_V_at)rm -f $@ $@-t + $(AM_V_GEN)$(do_subst) $(srcdir)/defs-static.in >$@-t + $(AM_V_at) : Sanity check on the substitutions; \ + if LC_ALL=C grep '@[a-zA-Z0-9_][a-zA-Z0-9_]*@' $@-t; then \ + echo "$@ contains unexpanded substitution (see lines above)"; \ + exit 1; \ + fi + $(AM_V_at)chmod a-w $@-t && mv -f $@-t $@ +EXTRA_DIST += defs-static.in +CLEANFILES = defs-static # If two test scripts have the same basename, they will end up sharing # the same log file, leading to all sort of undefined and undesired @@ -122,6 +165,10 @@ check-local: check-no-repeated-test-name ## Checking the list of tests. include $(top_srcdir)/CheckListOfTests.am +# Run the testsuite with the installed aclocal and automake. +installcheck-local: + am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check + clean-local: clean-local-check .PHONY: clean-local-check clean-local-check: diff --git a/tests/Makefile.in b/tests/Makefile.in index f794eb447..814f31dae 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -51,8 +51,8 @@ build_triplet = @build@ host_triplet = @host@ DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/aclocal.in $(srcdir)/automake.in $(srcdir)/defs \ - $(srcdir)/defs-static.in $(srcdir)/list-of-tests.mk \ - $(srcdir)/testsuite-part.am $(top_srcdir)/CheckListOfTests.am + $(srcdir)/list-of-tests.mk $(srcdir)/testsuite-part.am \ + $(top_srcdir)/CheckListOfTests.am subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \ @@ -66,8 +66,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/lib/mkinstalldirs -CONFIG_CLEAN_FILES = defs-static aclocal-${APIVERSION} \ - automake-${APIVERSION} +CONFIG_CLEAN_FILES = aclocal-${APIVERSION} automake-${APIVERSION} CONFIG_CLEAN_VPATH_FILES = defs AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) @@ -241,6 +240,8 @@ am_AUTOUPDATE = @am_AUTOUPDATE@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ +amdir = @amdir@ +automake_acdir = @automake_acdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -275,10 +276,12 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ +scriptdir = @scriptdir@ sh_errexit_works = @sh_errexit_works@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ +system_acdir = @system_acdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ @@ -296,7 +299,7 @@ EXTRA_DIST = ChangeLog-old $(handwritten_TESTS) tap-summary-aux.sh \ tap-setup.sh extract-testsuite-summary \ testsuite-summary-checks.sh trivial-test-driver \ $(generated_TESTS) gen-testsuite-part tap-functions.sh \ - plain-functions.sh + plain-functions.sh defs-static.in # Hand-written tests. @@ -616,6 +619,7 @@ deprecated-acinit.test \ destdir.test \ dirlist.test \ dirlist2.test \ +dirlist-abspath.test \ discover.test \ dist-included-parent-dir.test \ distcleancheck.test \ @@ -1484,6 +1488,40 @@ generated_TESTS = ar-lib-w.test compile-w.test compile2-w.test \ tap-diagnostic-custom-w.test tap-driver-stderr-w.test \ tap-doc-w.test tap-more-w.test tap-more2-w.test \ tap-recheck-w.test + +# Keep in sync with AC_SUBST'd stuff in defs-static.in. +do_subst = sed \ + -e 's|@abs_srcdir[@]|$(abs_srcdir)|g' \ + -e 's|@abs_top_srcdir[@]|$(abs_top_srcdir)|g' \ + -e 's|@abs_builddir[@]|$(abs_builddir)|g' \ + -e 's|@prefix[@]|$(prefix)|g' \ + -e 's|@amdir[@]|$(amdir)|g' \ + -e 's|@bindir[@]|$(bindir)|g' \ + -e 's|@datadir[@]|$(datadir)|g' \ + -e 's|@docdir[@]|$(docdir)|g' \ + -e 's|@automake_acdir[@]|$(automake_acdir)|g' \ + -e 's|@system_acdir[@]|$(system_acdir)|g' \ + -e 's|@scriptdir[@]|$(scriptdir)|g' \ + -e 's|@pkgvdatadir[@]|$(pkgvdatadir)|g' \ + -e 's|@host_alias[@]|$(host_alias)|g' \ + -e 's|@build_alias[@]|$(build_alias)|g' \ + -e 's|@APIVERSION[@]|$(APIVERSION)|g' \ + -e 's|@PATH_SEPARATOR[@]|$(PATH_SEPARATOR)|g' \ + -e 's|@SHELL[@]|$(SHELL)|g' \ + -e 's|@PERL[@]|$(PERL)|g' \ + -e 's|@EGREP[@]|$(EGREP)|g' \ + -e 's|@FGREP[@]|$(FGREP)|g' \ + -e 's|@TEX[@]|$(TEX)|g' \ + -e 's|@MODIFICATION_DELAY[@]|$(MODIFICATION_DELAY)|g' \ + -e 's|@am_AUTOCONF[@]|$(am_AUTOCONF)|g' \ + -e 's|@am_AUTOM4TE[@]|$(am_AUTOM4TE)|g' \ + -e 's|@am_AUTORECONF[@]|$(am_AUTORECONF)|g' \ + -e 's|@am_AUTOHEADER[@]|$(am_AUTOHEADER)|g' \ + -e 's|@am_AUTOUPDATE[@]|$(am_AUTOUPDATE)|g' \ + -e 's|@sh_errexit_works[@]|$(sh_errexit_works)|g' \ + -e 's|@configure_input[@]|Generated from $@.in. DO NOT EDIT BY HAND!|' + +CLEANFILES = defs-static am__tmk = tests-in-makefile-list.tmp am__tfs = tests-on-filesystem-list.tmp am__tdf = diff-in-tests-lists.tmp @@ -1521,8 +1559,6 @@ $(top_srcdir)/configure: $(am__configure_deps) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): -defs-static: $(top_builddir)/config.status $(srcdir)/defs-static.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ aclocal-${APIVERSION}: $(top_builddir)/config.status $(srcdir)/aclocal.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ automake-${APIVERSION}: $(top_builddir)/config.status $(srcdir)/automake.in @@ -1788,6 +1824,7 @@ mostlyclean-generic: -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) @@ -1842,7 +1879,7 @@ install-ps: install-ps-am install-ps-am: -installcheck-am: +installcheck-am: installcheck-local maintainer-clean: maintainer-clean-am -rm -f Makefile @@ -1872,10 +1909,10 @@ uninstall-am: install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am recheck recheck-html \ - uninstall uninstall-am + install-strip installcheck installcheck-am installcheck-local \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am recheck \ + recheck-html uninstall uninstall-am print-list-of-tests: @@ -2216,6 +2253,16 @@ $(TEST_LOGS): defs defs-static aclocal-$(APIVERSION) automake-$(APIVERSION) # subdivision of the tests. $(TEST_LOGS): plain-functions.sh tap-functions.sh +defs-static: defs-static.in + $(AM_V_at)rm -f $@ $@-t + $(AM_V_GEN)$(do_subst) $(srcdir)/defs-static.in >$@-t + $(AM_V_at) : Sanity check on the substitutions; \ + if LC_ALL=C grep '@[a-zA-Z0-9_][a-zA-Z0-9_]*@' $@-t; then \ + echo "$@ contains unexpanded substitution (see lines above)"; \ + exit 1; \ + fi + $(AM_V_at)chmod a-w $@-t && mv -f $@-t $@ + # If two test scripts have the same basename, they will end up sharing # the same log file, leading to all sort of undefined and undesired # behaviours. @@ -2274,6 +2321,10 @@ clean-local: clean-maintcheck-testslist-tmp clean-maintcheck-testslist-tmp: rm -f $(am__tmk) $(am__tfs) $(am__tdf) +# Run the testsuite with the installed aclocal and automake. +installcheck-local: + am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check + clean-local: clean-local-check .PHONY: clean-local-check clean-local-check: diff --git a/tests/README b/tests/README index e917d8712..b6dd45ca6 100644 --- a/tests/README +++ b/tests/README @@ -254,6 +254,13 @@ Do code preserves filenames with spaces. This will catch errors like `echo $filename | ...`. + Make sure your test script can be used to faithfully check an + installed version of automake (as with "make installcheck"). For + example, if you need to copy or grep an automake-provided script, + do not assume that they can be found in the `$top_srcdir/lib' + directory, but use `$am_scriptdir' instead. The complete list of + such `$am_..dir' variables can be found in tests/defs-static.in. + Before commit: make sure the test is executable, add the tests to TESTS in Makefile.am, add it to XFAIL_TESTS in addition if needed, write a ChangeLog entry, send the diff to . diff --git a/tests/acloca10.test b/tests/acloca10.test index df7da0e0f..daf81a178 100755 --- a/tests/acloca10.test +++ b/tests/acloca10.test @@ -20,6 +20,9 @@ # # Also check for --install. +# TODO: write a sister test that doesn't use a `dirlist' file, but +# TODO: puts third-party macros directly into `acdir'. + . ./defs || Exit 1 cat >> configure.in << 'END' @@ -28,7 +31,10 @@ MACRO1 MACRO3 END -mkdir m4_1 m4_2 dirlist-test +ACLOCAL="$ACLOCAL --system-acdir acdir" + +mkdir m4_1 m4_2 acdir acdir2 +echo ./acdir2 > acdir/dirlist cat >m4_1/somedefs.m4 <> foo]) @@ -39,7 +45,7 @@ cat >m4_2/somedefs.m4 <> foo]) EOF -cat >dirlist-test/macro.m4 <acdir2/macro.m4 <> foo]) EOF @@ -77,7 +83,7 @@ test ! -f m4_2/macro.m4 cp aclocal.m4 copy.m4 $sleep -echo '#GREPME' >>dirlist-test/macro.m4 +echo '#GREPME' >>acdir2/macro.m4 $ACLOCAL -I m4_1 -I m4_2 --install $AUTOCONF ./configure diff --git a/tests/acloca18.test b/tests/acloca18.test index a7a6e2e2e..cb5c408f9 100755 --- a/tests/acloca18.test +++ b/tests/acloca18.test @@ -108,9 +108,11 @@ $AUTOCONF grep macro14 foo grep macro21 foo +mkdir acdir +ACLOCAL="$ACLOCAL --system-acdir acdir" + $sleep -mkdir dirlist-test -cat >dirlist-test/m1.m4 <acdir/m1.m4 <> foo]) AC_DEFUN([AM_MACRO2], [echo macro2d >> foo]) diff --git a/tests/aclocal-print-acdir.test b/tests/aclocal-print-acdir.test index add1f6409..297c702d3 100755 --- a/tests/aclocal-print-acdir.test +++ b/tests/aclocal-print-acdir.test @@ -21,7 +21,7 @@ set -e $ACLOCAL --print-ac-dir -test "`$ACLOCAL --print-ac-dir`" = "$top_testsrcdir/m4" +test "`$ACLOCAL --print-ac-dir`" = "$am_system_acdir" $ACLOCAL -Wno-obsolete --acdir foo --print-ac-dir test "`$ACLOCAL -Wno-obsolete --acdir foo --print-ac-dir`" = foo @@ -30,6 +30,6 @@ $ACLOCAL --system-acdir /bar --print-ac-dir test "`$ACLOCAL --system-acdir /bar --print-ac-dir`" = /bar $ACLOCAL --automake-acdir /bar --print-ac-dir -test "`$ACLOCAL --automake-acdir /bar --print-ac-dir`" = "$top_testsrcdir/m4" +test "`$ACLOCAL --automake-acdir /bar --print-ac-dir`" = "$am_system_acdir" : diff --git a/tests/aclocal3.test b/tests/aclocal3.test index bd90782af..f5b2474e7 100755 --- a/tests/aclocal3.test +++ b/tests/aclocal3.test @@ -24,10 +24,14 @@ mkdir macros cat > macros/gnome.m4 << 'END' AC_DEFUN([GNOME_X_CHECKS], [ - AM_PATH_GTK(0.99.5,,AC_MSG_ERROR(GTK not installed, or gtk-config not in path)) +# Use a macro that cannot be installed in a third-party system-wide m4 +# file; otherwise, this test might fail under "make installcheck". + AM__PATH__GTK(0.99.5,,AC_MSG_ERROR(GTK not installed, or gtk-config not in path)) ]) END $ACLOCAL -I macros 2>stderr && { cat stderr >&2; Exit 1; } cat stderr -grep 'macros/gnome.m4:2:.*AM_PATH_GTK.*not found' stderr +grep '^macros/gnome\.m4:4:.*AM__PATH__GTK.*not found' stderr + +: diff --git a/tests/amhello-binpkg.test b/tests/amhello-binpkg.test index 648858cf3..c5051e101 100755 --- a/tests/amhello-binpkg.test +++ b/tests/amhello-binpkg.test @@ -20,7 +20,7 @@ am_create_testdir=empty . ./defs || Exit 1 -cp "$top_testsrcdir"/doc/amhello-1.0.tar.gz . \ +cp "$am_docdir"/amhello-1.0.tar.gz . \ || fatal_ "cannot get amhello tarball" gzip -dc amhello-1.0.tar.gz | tar xf - diff --git a/tests/amhello-cflags.test b/tests/amhello-cflags.test index 5811f451d..a7977f3ba 100755 --- a/tests/amhello-cflags.test +++ b/tests/amhello-cflags.test @@ -22,7 +22,7 @@ am_create_testdir=empty required=gcc . ./defs || Exit 1 -cp "$top_testsrcdir"/doc/amhello-1.0.tar.gz . \ +cp "$am_docdir"/amhello-1.0.tar.gz . \ || fatal_ "cannot get amhello tarball" gzip -dc amhello-1.0.tar.gz | tar xf - diff --git a/tests/amhello-cross-compile.test b/tests/amhello-cross-compile.test index cd00307cb..287462f51 100755 --- a/tests/amhello-cross-compile.test +++ b/tests/amhello-cross-compile.test @@ -21,11 +21,11 @@ am_create_testdir=empty required=i586-mingw32msvc-gcc . ./defs || Exit 1 -cp "$top_testsrcdir"/doc/amhello-1.0.tar.gz . \ +cp "$am_docdir"/amhello-1.0.tar.gz . \ || fatal_ "cannot get amhello tarball" host=i586-mingw32msvc -build=`"$top_testsrcdir"/lib/config.guess` && test -n "$build" \ +build=`"$am_scriptdir"/config.guess` && test -n "$build" \ || fatal_ "cannot guess build platform" case $build in *mingw*) skip_ "build system is MinGW too";; esac diff --git a/tests/ansi2knr-no-more.test b/tests/ansi2knr-no-more.test index 0d405fe84..a2ac33073 100755 --- a/tests/ansi2knr-no-more.test +++ b/tests/ansi2knr-no-more.test @@ -32,7 +32,7 @@ $ACLOCAL -Wnone 2>stderr && { cat stderr >&2; Exit 1; } cat stderr >&2 grep "^configure\\.in:5:.*$warn_rx" stderr -cat aclocal.sav "$top_testsrcdir"/m4/protos.m4 > aclocal.m4 +cat aclocal.sav "$am_automake_acdir"/protos.m4 > aclocal.m4 $AUTOCONF -Wnone 2>stderr && { cat stderr >&2; Exit 1; } cat stderr >&2 grep "^configure\\.in:5:.*$warn_rx" stderr diff --git a/tests/autodist-stamp-vti.test b/tests/autodist-stamp-vti.test index 1dc91c7f0..f7a111b25 100755 --- a/tests/autodist-stamp-vti.test +++ b/tests/autodist-stamp-vti.test @@ -46,7 +46,7 @@ END # Required when using Texinfo. : > texinfo.tex -cp "$top_testsrcdir"/lib/mdate-sh . +cp "$am_scriptdir"/mdate-sh . $ACLOCAL $AUTOCONF diff --git a/tests/auxdir.test b/tests/auxdir.test index 04e69f8b0..2dc548c46 100755 --- a/tests/auxdir.test +++ b/tests/auxdir.test @@ -31,7 +31,7 @@ cat > Makefile.am << 'END' pkgdata_DATA = END -cp "$top_testsrcdir/lib/mkinstalldirs" . +cp "$am_scriptdir/mkinstalldirs" . # The "././" prefix confuses Automake into thinking it is doing a # subdir build. Yes, this is hacky. diff --git a/tests/check2.test b/tests/check2.test index 436242458..0424bf88a 100755 --- a/tests/check2.test +++ b/tests/check2.test @@ -44,7 +44,7 @@ CLEANFILES = echo.sh END if test x"$parallel_tests" = x"yes"; then - cp "$top_testsrcdir"/lib/test-driver . + cp "$am_scriptdir/test-driver" . fi $ACLOCAL diff --git a/tests/copy.test b/tests/copy.test index 3eb1c9eac..8ad3f2a5e 100755 --- a/tests/copy.test +++ b/tests/copy.test @@ -73,7 +73,7 @@ test FAKE-DEPCOMP = `cat auxdir/depcomp` rm -rf auxdir mkdir auxdir cd auxdir -ln -s "$top_testsrcdir/lib/missing" "$top_testsrcdir/lib/install-sh" . +ln -s "$am_scriptdir/missing" "$am_scriptdir/install-sh" . cd .. $AUTOMAKE -a -c @@ -84,6 +84,6 @@ test -f auxdir/missing test -h auxdir/missing test -f auxdir/depcomp test ! -h auxdir/depcomp -diff $top_testsrcdir/lib/depcomp auxdir/depcomp +diff "$am_scriptdir"/depcomp auxdir/depcomp : diff --git a/tests/defs b/tests/defs index 931188b60..ac30e43cc 100644 --- a/tests/defs +++ b/tests/defs @@ -117,6 +117,15 @@ esac # by the configure-time detected $CONFIG_SHELL. +## ----------------------- ## +## Early debugging info. ## +## ----------------------- ## + +echo "Running from installcheck: $am_running_installcheck" +echo "Using TAP: $using_tap" +echo "PATH = $PATH" + + ## ---------------------- ## ## Environment cleanup. ## ## ---------------------- ## @@ -470,10 +479,10 @@ sed_unindent_prog="" # Avoid interferences from the environment. get_shell_script () { if test x"$test_prefer_config_shell" = x"yes"; then - sed "1s|#!.*|#! $SHELL|" "$top_testsrcdir/lib/$1" > "$1" + sed "1s|#!.*|#! $SHELL|" "$am_scriptdir/$1" > "$1" chmod a+x "$1" else - cp "$top_testsrcdir/lib/$1" . + cp "$am_scriptdir/$1" . fi sed 10q "$1" # For debugging. } @@ -507,9 +516,9 @@ fetch_tap_driver () # TODO: with /bin/sh, for better coverage. case $am_tap_implementation in perl) - sed "1s|#!.*|#! $PERL -w|" "$top_testsrcdir"/lib/tap-driver.pl ;; + sed "1s|#!.*|#! $PERL -w|" "$am_scriptdir"/tap-driver.pl ;; shell) - sed "1s|#!.*|#! $SHELL|" "$top_testsrcdir"/lib/tap-driver.sh ;; + sed "1s|#!.*|#! $SHELL|" "$am_scriptdir"/tap-driver.sh ;; *) fatal_ "invalid \$am_tap_implementation '$am_tap_implementation'" ;; esac > tap-driver \ @@ -526,10 +535,6 @@ am_tap_implementation=${am_tap_implementation-shell} ## required by them. ## ## ----------------------------------------------------------- ## -# Print it here, so that the user will see it also if the test -# will be skipped due to some tool missing in $PATH itself. -echo "$PATH" - # So that we can force the use of correct gcc, g++ etc., consistently # with cross-compilation settings. if cross_compiling; then @@ -830,11 +835,6 @@ esac # We might need extra macros, e.g., from Libtool or Gettext. # Find them on the system. -# Use `-I $top_testsrcdir/m4' in addition to `--acdir=$top_testsrcdir/m4', -# because the other `-I' directories added for libtool and gettext might -# contain files from an old version of Automake that we don't want to use. -# Use `-Wno-syntax' because we do not want our test suite to fail because -# some third-party .m4 file is underquoted. case " $required " in *' libtool '* | *' libtoolize '* | *' gettext '* ) aclocaldir=$testprefix/share/aclocal @@ -875,7 +875,13 @@ case " $required " in fi ;; esac - ACLOCAL="$ACLOCAL -Wno-syntax -I $top_testsrcdir/m4 $extra_includes -I $aclocaldir" + # Use `-I $am_automake_acdir' because the other `-I' directories added + # for libtool and gettext might contain files from an old version of + # Automake that we don't want to use. Use `-Wno-syntax' because we + # do not want our test suite to fail because some third-party `.m4' + # file is underquoted. + ACLOCAL="$ACLOCAL -Wno-syntax -I $am_automake_acdir" + ACLOCAL="$ACLOCAL $extra_includes -I $aclocaldir" unset libtool_found gettext_found unset extra_includes aclocaldir ;; @@ -950,9 +956,9 @@ else cd ./$testSubDir \ || framework_failure_ "cannot chdir into test subdirectory" if test x"$am_create_testdir" != x"empty"; then - cp "$top_testsrcdir"/lib/install-sh "$top_testsrcdir"/lib/missing \ - "$top_testsrcdir"/lib/depcomp . \ - || framework_failure_ "fetching common files from lib/" + cp "$am_scriptdir"/install-sh "$am_scriptdir"/missing \ + "$am_scriptdir"/depcomp . \ + || framework_failure_ "fetching common files from $am_scriptdir" # Build appropriate environment in test directory. E.g., create # configure.in, touch all necessary files, etc. Don't use AC_OUTPUT, # but AC_CONFIG_FILES so that appending still produces a valid diff --git a/tests/defs-static.in b/tests/defs-static.in index 532b0a875..e461b77f6 100644 --- a/tests/defs-static.in +++ b/tests/defs-static.in @@ -101,6 +101,35 @@ top_testsrcdir='@abs_top_srcdir@' testbuilddir='@abs_builddir@' testprefix='@prefix@' +# Support for the "installcheck" target. +case ${am_running_installcheck:=no} in + yes) + am_amdir='@amdir@' + am_automake_acdir='@automake_acdir@' + am_bindir='@bindir@' + am_datadir='@datadir@' + am_docdir='@docdir@' + am_pkgvdatadir='@pkgvdatadir@' + am_scriptdir='@scriptdir@' + am_system_acdir='@system_acdir@' + ;; + no) + am_amdir=$top_testsrcdir/lib/am + am_automake_acdir=$top_testsrcdir/m4 + am_bindir=$testbuilddir + am_datadir=$top_testsrcdir + am_docdir=$top_testsrcdir/doc + am_pkgvdatadir=$top_testsrcdir/lib + am_scriptdir=$top_testsrcdir/lib + am_system_acdir=$top_testsrcdir/m4/acdir + ;; + *) + echo "$argv0: variable \`am_running_installcheck' has invalid" + "value \`$am_running_installcheck'" >&2 + exit 99 + ;; +esac + APIVERSION='@APIVERSION@' PATH_SEPARATOR='@PATH_SEPARATOR@' @@ -117,7 +146,6 @@ test -z "$AUTOM4TE" && AUTOM4TE="@am_AUTOM4TE@" test -z "$AUTORECONF" && AUTORECONF="@am_AUTORECONF@" test -z "$AUTOHEADER" && AUTOHEADER="@am_AUTOHEADER@" test -z "$AUTOUPDATE" && AUTOUPDATE="@am_AUTOUPDATE@" -test -z "$MISSING" && MISSING=$top_testsrcdir/lib/missing # Use -Werror because this also turns some Perl warnings into error. # Tests for which this is inappropriate should use -Wno-error. @@ -168,10 +196,11 @@ sleep='sleep @MODIFICATION_DELAY@' # in UTC; see . old_timestamp=198309271735.59 -# Make our wrapper scripts accessible by default. And avoid to uselessly +# Make our wrapper script (or installed scripts, if running under +# "installcheck") accessible by default. And avoid to uselessly # extend $PATH multiple times if this file is sourced multiple times. case $PATH in - "$testbuilddir$PATH_SEPARATOR"*) ;; - *) PATH="$testbuilddir$PATH_SEPARATOR$PATH";; + $am_bindir$PATH_SEPARATOR*) ;; + *) PATH=$am_bindir$PATH_SEPARATOR$PATH;; esac export PATH diff --git a/tests/depmod.tap b/tests/depmod.tap index c40fea827..6f6a73e9f 100755 --- a/tests/depmod.tap +++ b/tests/depmod.tap @@ -63,7 +63,7 @@ ocwd=`pwd` || fatal_ "cannot get current working directory" # Keep this in sync with the contents of depend.m4. all_depmodes=`\ - sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < "$top_testsrcdir/lib/depcomp" \ + sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < "$am_scriptdir/depcomp" \ | grep -v '^none$'` \ && : Turn newlines and tabs into spaces, and strip extra whitespace. \ && all_depmodes=`echo $all_depmodes` \ diff --git a/tests/dirlist-abspath.test b/tests/dirlist-abspath.test new file mode 100755 index 000000000..b48ad8c18 --- /dev/null +++ b/tests/dirlist-abspath.test @@ -0,0 +1,42 @@ +#! /bin/sh +# Copyright (C) 2002, 2003, 2004, 2011 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Check use of absolute paths in dirlist. + +am_create_testdir=empty +. ./defs || Exit 1 + +mkdir acdir-more sub sub/acdir +echo "`pwd`/acdir-more" > sub/acdir/dirlist + +echo 'AC_DEFUN([AM_FOO], [foo-foo--foo])' > acdir-more/foo.m4 + +cd sub + +cat > configure.in <. # Check dirlist support. -# This test relies on m4/dirlist. . ./defs || Exit 1 @@ -24,7 +23,8 @@ AC_INIT AM_INIT_GUILE_MODULE EOF -mkdir dirlist-test +mkdir acdir dirlist-test +echo ./dirlist-test > acdir/dirlist cat >dirlist-test/dirlist-check.m4 <<'END' AC_DEFUN([AM_INIT_GUILE_MODULE],[ @@ -39,7 +39,7 @@ cat >dirlist-test/init.m4 <. # Check dirlist globbing support. -# This test relies on m4/dirlist. . ./defs || Exit 1 @@ -42,7 +41,13 @@ AC_DEFUN([AM_FOO_BAR],[ : foo bar baz ]) END -$ACLOCAL + +mkdir my-acdir +cat > my-acdir/dirlist <<'END' +dirlist2*-test +END + +$ACLOCAL --system-acdir my-acdir $AUTOCONF # There should be no m4_include in aclocal.m4, even though m4/dirlist diff --git a/tests/list-of-tests.mk b/tests/list-of-tests.mk index 8ded8eee0..05b874b42 100644 --- a/tests/list-of-tests.mk +++ b/tests/list-of-tests.mk @@ -301,6 +301,7 @@ deprecated-acinit.test \ destdir.test \ dirlist.test \ dirlist2.test \ +dirlist-abspath.test \ discover.test \ dist-included-parent-dir.test \ distcleancheck.test \ diff --git a/tests/location.test b/tests/location.test index 9013e31d9..f96a09e70 100755 --- a/tests/location.test +++ b/tests/location.test @@ -42,11 +42,20 @@ VAR = 1 \ 3 END +# Smash the useless difference of lib file locations. +smash_useless_diffs () +{ + # FIXME: we could get rid of the second 's|||' once we improve our + # wrapper scripts ... + sed -e "s|^$am_amdir/\\([a-z]*\.am\\)|\\1|" \ + -e "s|^automake-$APIVERSION:|automake:|" ${1+"$@"}; +} + $ACLOCAL AUTOMAKE_fails -Wno-error -# Smash the useless difference of lib file locations. -sed 's,^.*lib/am/\([a-z]*\.am\),\1,' stderr >observed +smash_useless_diffs stderr >observed + cat >expected <<\EOF Makefile.am:12: warning: VAR multiply defined in condition TRUE ... Makefile.am:8: ... `VAR' previously defined here @@ -68,10 +77,18 @@ program.am: ... `ctags$(EXEEXT)' previously defined here Makefile.am:6: while processing program `ctags' EOF +cat expected +cat observed diff expected observed || Exit 1 AUTOMAKE_fails -Werror -sed 's,^.*lib/am/\([a-z]*\.am\),\1,' stderr >observed -( echo 'automake: warnings are treated as errors'; cat expected ) \ - | diff - observed || Exit 1 +smash_useless_diffs stderr >observed +(echo 'automake: warnings are treated as errors' && cat expected) > t +mv -f t expected + +cat expected +cat observed + +diff expected observed || Exit 1 + : diff --git a/tests/multlib.test b/tests/multlib.test index e2ab6f337..d196efd55 100755 --- a/tests/multlib.test +++ b/tests/multlib.test @@ -106,8 +106,7 @@ mkdir libbar/sub : > libbar/bar.c -cp "$top_testsrcdir/lib/config-ml.in" . -cp "$top_testsrcdir/lib/symlink-tree" . +cp "$am_scriptdir"/config-ml.in "$am_scriptdir"/symlink-tree . $ACLOCAL $AUTOCONF diff --git a/tests/obsolete.test b/tests/obsolete.test index 8a247d839..4fd126a7a 100755 --- a/tests/obsolete.test +++ b/tests/obsolete.test @@ -28,7 +28,7 @@ AC_INIT END $PERL -ne '/AU_DEFUN\(\[(\w+)\]/ && print "$1\n"' \ - "$top_testsrcdir/m4/obsolete.m4" >> obs + "$am_automake_acdir/obsolete.m4" > obs cat obs >> configure.in $PERL -ne 'chomp; print "grep $_ output || Exit 1\n"; ' obs > obs.1 $PERL -ne 'chomp; print "grep $_ configure.in && Exit 1\n"; ' obs > obs.2 diff --git a/tests/parallel-tests-interrupt.tap b/tests/parallel-tests-interrupt.tap index 2acb81462..9e3f2dec7 100755 --- a/tests/parallel-tests-interrupt.tap +++ b/tests/parallel-tests-interrupt.tap @@ -39,7 +39,7 @@ END # This is hacky and ugly, but has the great advantage of avoiding us a lot # of pain with background processes and related synchronization issues. -cat - "$top_testsrcdir"/lib/test-driver > test-driver <<'END' +cat - "$am_scriptdir"/test-driver > test-driver <<'END' #!/bin/sh echo $$ > pid END diff --git a/tests/repeated-options.test b/tests/repeated-options.test index 1609aa924..dcdcbb304 100755 --- a/tests/repeated-options.test +++ b/tests/repeated-options.test @@ -58,7 +58,7 @@ int main (void) } END -cp "$top_testsrcdir"/lib/compile "$top_testsrcdir"/lib/test-driver . +cp "$am_scriptdir"/compile "$am_scriptdir"/test-driver . $ACLOCAL $AUTOMAKE --foreign --foreign -Wall 2>stderr || { cat stderr >&2; Exit 1; } diff --git a/tests/suffix5.test b/tests/suffix5.test index 6bdaea41e..3061497da 100755 --- a/tests/suffix5.test +++ b/tests/suffix5.test @@ -45,7 +45,7 @@ END : > ltmain.sh -cp "$top_testsrcdir"/lib/config.guess "$top_testsrcdir"/lib/config.sub . +cp "$am_scriptdir/config.guess" "$am_scriptdir/config.sub" . $ACLOCAL $AUTOMAKE diff --git a/tests/tap-doc2.test b/tests/tap-doc2.test index 468bb1cc2..dc69654fa 100755 --- a/tests/tap-doc2.test +++ b/tests/tap-doc2.test @@ -70,7 +70,7 @@ END chmod a+x *.test mkdir build-aux -cp "$top_testsrcdir"/lib/tap-driver.pl build-aux \ +cp "$am_scriptdir"/tap-driver.pl build-aux \ || framework_failure_ "fetching the perl TAP driver" (export AUTOMAKE ACLOCAL AUTOCONF && $AUTORECONF -vi) || Exit 1 diff --git a/tests/txinfo22.test b/tests/txinfo22.test index 06819fdcf..07f0573b5 100755 --- a/tests/txinfo22.test +++ b/tests/txinfo22.test @@ -50,7 +50,7 @@ END mkdir aux1 mkdir tex -cp "$top_testsrcdir/lib/texinfo.tex" tex +cp "$am_pkgvdatadir/texinfo.tex" tex $ACLOCAL $AUTOMAKE --add-missing diff --git a/tests/vtexi3.test b/tests/vtexi3.test index 882906887..b474ef653 100755 --- a/tests/vtexi3.test +++ b/tests/vtexi3.test @@ -65,7 +65,7 @@ END # Required when using Texinfo. : > texinfo.tex -cp "$top_testsrcdir"/lib/mdate-sh . +cp "$am_scriptdir"/mdate-sh . $ACLOCAL $AUTOCONF diff --git a/tests/warnings-unknown.test b/tests/warnings-unknown.test index 77ed589d7..db803a57e 100755 --- a/tests/warnings-unknown.test +++ b/tests/warnings-unknown.test @@ -34,9 +34,13 @@ END $ACLOCAL AUTOMAKE_fails -Wbazquux +# FIXME: we could get rid of this once we improve our wrapper scripts. +sed "s/^automake:/automake-$APIVERSION:/" stderr > t +mv -f t stderr +cat stderr >&2 grep '^configure\.in:2:.* unknown warning category.*zardoz' stderr grep '^Makefile\.am:1:.* unknown warning category.*foobar' stderr -grep '^automake:.* unknown warning category.*bazquux' stderr +grep "^automake-$APIVERSION:.* unknown warning category.*bazquux" stderr # Check that we can override warnings about unknown warning categories. $AUTOMAKE -Wno-unsupported -Wbazquux -- 2.47.2