Stefano Lattarini [Tue, 3 Jul 2012 19:56:08 +0000 (21:56 +0200)]
build: fix cleaning of test directories in contrib (and in t/perf)
* Makefile.am (clean-local-check): Update recipe to cater to the fact
that some tests using a temporary directory have been placed in other
directories that the 't/' directory (for the moment, at least 't/perf'
and 'contrib/t').
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 3 Jul 2012 19:15:33 +0000 (21:15 +0200)]
Merge branch 'aclocal-trace-macrodir'
* aclocal-trace-macrodir:
aclocal: deprecate ACLOCAL_AMFLAGS, trace AC_CONFIG_MACRO_DIR instead
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 5 Oct 2010 15:14:00 +0000 (17:14 +0200)]
aclocal: deprecate ACLOCAL_AMFLAGS, trace AC_CONFIG_MACRO_DIR instead
Maintaining ACLOCAL_AMFLAGS in the Makefile.am to pass extra flags
to aclocal is (and have always been) quite of an hack. For example,
autoreconf is forced to grep Makefile.am to honour those flags. But
this is a bad obsolescent behaviour; in fact, the autotools have moved
consistently in the past years from custom grepping of Makefile.am and
configure.ac to tracing of m4 macro calls, which is more consistent,
more reliable and more flexible.
And when autoreconf is not used, the developer is forced to add *by hand*
the flags specified by ACLOCAL_AMFLAGS to the aclocal calls not triggered
by make rebuild rules; here lie again more duplication and more chances
for errors.
Moreover, ACLOCAL_AMFLAGS has only two typical use cases:
- to instruct aclocal to look for extra macro definition in a local
directory (as with "ACLOCAL_AMFLAGS = -I m4"); and
- to further instruct aclocal to copy in that local directory the
required third-party .m4 files found in the system-wide directory
(as with "ACLOCAL_AMFLAGS = -I m4 --install").
The first use case can be better covered if aclocal can instead trace and
honours call to the AC_CONFIG_MACRO_DIR autoconf macro; and the second
use case shouldn't be considered really legitimate, as it is quite (and
subtly) brittle (see automake bug#9037).
Thus we now make aclocal trace AC_CONFIG_MACRO_DIR macro, and act
accordingly. For backward compatibility, we continue to support the
ACLOCAL_AMFLAGS special variable (although removing any mention of it
from the documentation). Future Automake releases will likely start
to warn about the use of that variable, and eventually remove support
for it altogether.
From a suggestion by Eric Blake.
This is a much simplified (and IMHO saner) version of the patch series
discussed in the threads:
<http://lists.gnu.org/archive/html/automake-patches/2010-10/msg00045.html>
<http://lists.gnu.org/archive/html/automake-patches/2010-12/msg00156.html>
* aclocal.in ($ac_config_macro_dir): New global variable.
(trace_used_macros): Also trace the macro 'AC_CONFIG_MACRO_DIR',
and set the '$ac_config_macro_dir' variable accordingly.
(parse_arguments): Code for diagnosis of '--install' used without
any user-specified include directory moved ...
(while (1)): .. into the main loop. Which now also updates the
list of user-specified include directories to include the directory
given as argument to the call (if any) of 'AC_CONFIG_MACRO_DIR'.
* lib/am/configure.am: Update comments.
* NEWS: Updated.
* doc/automake.texi: Likewise. Also, stop advising the use of the
'--install' in ACLOCAL_AMFLAGS (see automake bug#9037 for a rationale),
and remove any reference to ACLOCAL_AMFLAGS (which is now considered
obsolescent).
* t/aclocal-path-install.sh: Adjust grepping check in the aclocal
error messages.
* t/subpkg.sh: Updated: add 'AC_CONFIG_MACRO_DIR' call to configure.ac,
remove setting of 'ACLOCAL_AMFLAGS' in Makefile.am and use of aclocal
command line arguments.
* t/subpkg2.sh: Likewise.
* t/subdir8.sh: Likewise.
* t/remake10c.sh: Likewise.
* t/remake8a.sh: Likewise.
* t/remake8b.sh: Likewise.
* t/aclocal4.sh: Likewise.
* t/aclocal6.sh: Likewise.
* t/acloca14.sh: Likewise.
* t/acloca22.sh: Likewise.
* t/aclocal5.sh: Likewise, and do not not invade the Automake
namespace (this avoids spurious failures).
* t/acloca14b.sh: New test, identical to the previous version of
'acloca14.test'; it is kept to verify backwards compatibility with
the use of ACLOCAL_AMFLAGS.
* t/acloca22b.sh: Likewise (but for 'acloca22.test').
* t/aclocal-amflags.sh: New test, check for backwards
compatibility that ACLOCAL_AMFLAGS still works.
* t/remake-macrodir.sh: New test, checking that aclocal's honoring of
AC_CONFIG_MACRO_DIR interacts nicely with automatic rebuild rules.
* t/list-of-tests.mk: Add the new tests.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 2 Jul 2012 19:05:34 +0000 (21:05 +0200)]
contrib: check-html: pass flags to rst2html invocations
Related to automake bug#11287.
* contrib/t/check-html.am (.log.html): Here, passing $(AM_RST2HTMLFLAGS)
and $(RST2HTMLFLAGS) (in that order).
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 2 Jul 2012 18:58:23 +0000 (20:58 +0200)]
contrib: simple improvements to check-html
Related to automake bug#11287.
* contrib/t/check-html.am (.log.html): Do not look for $RST2HTML in
the environment, looking for $(RST2HTML) should be enough (also, the
pre-existing code was broken, because it single-quoted $RST2HTML).
Fix the loop-and-search implementation to be more similar to the
one in 'contrib/t/parallel-tests-html.sh'. Prefer 'mv -f' over bare
'mv'. Do not break the recipe in
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 2 Jul 2012 18:33:03 +0000 (20:33 +0200)]
coverage: check-html can be used recursively
Addresses the main part of Automake bug#11287.
* contrib/t/parallel-tests-html-recursive.sh: New test.
* contrib/t/local.am: Add it.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 2 Jul 2012 15:24:24 +0000 (17:24 +0200)]
tests: tests for stuff in contrib goes in 'contrib/t'
* t/help-multilib.sh: Move ...
* contrib/t/help-multilib.sh: .. here. Remove a now-obsolete
"FIXME" comment.
* t/multlib.sh: Move ...
* contrib/t/multilib.sh: .. here. Remove a now-obsolete
"FIXME" comment.
* t/parallel-test2.sh: Move ...
* contrib/t/parallel-tests-html.sh: .. here. Remove a
now-obsolete "FIXME" comment.
* contrib/t/local.am: New, basically defining the list of
tests for stuff in 'contrib/'.
* t/list-of-tests.mk, Makefile.am: Adjust.
* .gitignore: Update.
* syntax-checks.mk (xtests): Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 2 Jul 2012 13:04:12 +0000 (15:04 +0200)]
Merge branch 'user-recursive-targets'
* user-recursive-targets:
recursion: support user-defined recursive targets
tests: rename 'recurs*.sh' to 'var-recurs*.sh'
tests: minor improvements to 'recurs*.sh'
Stefano Lattarini [Tue, 12 Jun 2012 12:48:12 +0000 (14:48 +0200)]
recursion: support user-defined recursive targets
The user can now define his own recursive targets that recurse
in the directories specified in $(SUBDIRS). That can be done by
specifying the name of such targets in invocations of the new
'AM_EXTRA_RECURSIVE_TARGETS' m4 macro.
The API goes like this:
$ cat configure.ac
AC_INIT([pkg-name], [1.0]
AM_INIT_AUTOMAKE
AM_EXTRA_RECURSIVE_TARGETS([foo])
AC_CONFIG_FILES([Makefile sub/Makefile])
AC_OUTPUT
$ cat Makefile.am
SUBDIRS = sub
foo-local:
@echo This will be run by "make foo".
$ cat sub/Makefile.am
foo-local:
@echo This too will be run by a "make foo" issued either in
@echo the 'sub/' directory or in the top-level directory.
Like for the "default" recursive targets (e.g., 'all' and 'check'),
the user-defined recursive targets descend in the $(SUBDIRS) in a
depth-first fashion, and process '.' last (unless that is explicitly
specified in $(SUBDIRS)).
* NEWS, doc/automake.texi: Document the new feature.
* automake.in (@extra_recursive_targets): New global variable.
(scan_autoconf_traces): Trace macro '_AM_EXTRA_RECURSIVE_TARGETS'.
(handle_user_recursion): New subroutine; among other things, it defines
the new internal '$(am__extra_recursive_targets)' make variable, and
the '*-am', '*-local' and '*-recursive' targets associated with the
user-specified user recursive targets.
(generate_makefile): Call the new subroutine.
* lib/am/subdirs.am (am__recursive_targets): New internal make variable,
listing all of '$(RECURSIVE_TARGETS)', '$(RECURSIVE_CLEAN_TARGETS)' and
'$(am__extra_recursive_targets)' together.
(AM_RECURSIVE_TARGETS): Adjust the definition of this variable ...
(.PHONY, .MAKE): ... and the list of dependencies of these special targets
to take advantage of the new '$(am__recursive_targets)' variable.
($(am__recursive_targets)): New targets, superseding ...
($(RECURSIVE_TARGETS), $(RECURSIVE_CLEAN_TARGETS)): ... these, and
inheriting their rules. This way, the rules to handle recursion for
built-in recursive targets (e.g., 'all', 'dvi', 'clean') and for user
defined recursive targets are the same.
* m4/extra-recurs.m4: New file, contain definition of new macro
'AM_EXTRA_RECURSIVE_TARGETS' and '_AM_EXTRA_RECURSIVE_TARGETS'.
These macros are basically dummy, only used for tracing by automake.
* m4/Makefile.am (dist_automake_ac_DATA): Update.
* t/recurs-user.sh: New test.
* t/recurs-user2.sh: Likewise.
* t/recurs-user-deeply-nested.sh: Likewise.
* t/recurs-user-indir.sh: Likewise.
* t/recurs-user-keep-going.sh: Likewise.
* t/recurs-user-many.sh: Likewise.
* t/recurs-user-no-subdirs.sh: Likewise.
* t/recurs-user-no-top-level.sh: Likewise.
* t/recurs-user-override.sh: Likewise.
* t/recurs-user-phony.sh: Likewise.
* t/recurs-user-wrap.sh: Likewise.
* t/remake-recurs-user.sh: Likewise.
* t/list-of-tests.mk: Update.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 12 Jun 2012 08:11:35 +0000 (10:11 +0200)]
tests: rename 'recurs*.sh' to 'var-recurs*.sh'
* t/recurs.sh: Rename ...
* t/var-recurs.sh: ... to this.
* t/recurs2.sh: Rename ...
* t/var-recurs2.sh: ... to this.
* tests/list-of-tests.mk: Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 5 Oct 2010 20:19:46 +0000 (22:19 +0200)]
tests: minor improvements to 'recurs*.sh'
* t/recurs.sh: Removed useless calls to AM_CONDITIONAL in
the generated 'configure.ac'.
* t/recurs2.sh: Add trailing ':' command.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 16:01:35 +0000 (18:01 +0200)]
Merge branch 'maint'
* maint:
tests: don't trust the exit status of "make -k" for non-GNU makes
parallel-tests: reimplement fix for bug#11791
tests setup: unset CDPATH
tests setup: more namespace safeness
tests setup: remove an unused variable
tests setup: less hard-coding of the test subdirectory
Stefano Lattarini [Sun, 1 Jul 2012 11:31:54 +0000 (13:31 +0200)]
tests: don't trust the exit status of "make -k" for non-GNU makes
* t/parallel-tests-recheck-pr11791.sh: Here. At least some versions
of FreeBSD make botch it up, returning success when failure should be
returned.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 10:56:22 +0000 (12:56 +0200)]
parallel-tests: reimplement fix for bug#11791
* lib/am/check.am: Here. The new implementation is shorter, slightly
more efficient (requiring less forks), less brittle in the face of
signals or unexpected interruptions in the make process, and should
also be easier to merge in the 'ng/master' branch (as of now, due to
the difficulties in merging our previous version of the fix in the
'ng/master' codebase, Automake-NG still lacks a fix for bug#11791).
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 09:50:54 +0000 (11:50 +0200)]
tests setup: unset CDPATH
So that our test scripts can safely chdir around using relative
paths as well, without having to worry abut possible CDPATH
interferences.
* defs-static.in: unset CDPATH.
* t/ax/tests-init.sh: Remove a now-unneeded workaround.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 09:01:02 +0000 (11:01 +0200)]
tests setup: more namespace safeness
* t/ax/tests-init.sh ($testSubDir): Rename ...
($am_test_subdir): ... to this, throughout the file.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 08:54:26 +0000 (10:54 +0200)]
tests setup: remove an unused variable
* defs-static.in ($testprefix): This one.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 08:36:34 +0000 (10:36 +0200)]
tests setup: less hard-coding of the test subdirectory
* t/ax/tests-init.sh: Make the code creating the temporary
test subdirectory smart enough to automatically create it
in the same subdirectory of the test that is being run.
* defs-static.in ($MKDIR_P, $am_rel_srcdir): New variables,
AC_SUBST'd from @MKDIR_P@ and @srcdir@ respectively, and
used in the new 'tests-init.sh' code.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 08:14:23 +0000 (10:14 +0200)]
Merge branch 'maint'
* maint:
parallel-tests: silence an overly verbose recipe
tests: fix some uses of 'Exit', where 'exit' should now be used instead
maintcheck: test scripts should be executable, check for that
Stefano Lattarini [Sat, 30 Jun 2012 21:37:57 +0000 (23:37 +0200)]
parallel-tests: silence an overly verbose recipe
* lib/am/check.am (check-TESTS): Here, the part of the recipe
removing the stale '.log' and '.trs' files.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 21:34:56 +0000 (23:34 +0200)]
tests: fix some uses of 'Exit', where 'exit' should now be used instead
* t/parallel-tests-recheck-pr11791.sh: Here.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 21:26:17 +0000 (23:26 +0200)]
maintcheck: test scripts should be executable, check for that
* syntax-checks.mk (sc_tests_executable): Here, in this new check.
(syntax_check_rules): Add it.
* Makefile.am (dist-hook): Drop, no need to make test cases executable
anymore.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 20:17:22 +0000 (22:17 +0200)]
Merge branch 'maint'
* maint:
parallel-tests: recipes for "check" and "recheck" are separated again
Stefano Lattarini [Sat, 30 Jun 2012 19:59:56 +0000 (21:59 +0200)]
Merge branch 'recheck-fix' into maint
* recheck-fix:
parallel-tests: recipes for "check" and "recheck" are separated again
Stefano Lattarini [Sat, 30 Jun 2012 19:32:20 +0000 (21:32 +0200)]
Merge branch 'maint'
* maint:
parallel-tests: "recheck" behaves better in case of compilation failures
scripts: quote 'like this', not `like this'
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 18:53:39 +0000 (20:53 +0200)]
parallel-tests: recipes for "check" and "recheck" are separated again
* lib/am/check.am: Here. They have distinctly diverged recently, and
the reduction in code duplication obtained keeping their recipes united
is not anymore worth the extra complications.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 18:20:22 +0000 (20:20 +0200)]
Merge branch 'recheck-fix' into maint
* recheck-fix:
parallel-tests: "recheck" behaves better in case of compilation failures
scripts: quote 'like this', not `like this'
Stefano Lattarini [Sat, 30 Jun 2012 17:46:13 +0000 (19:46 +0200)]
tests: prefer "test ! -e FILE" to check that a file doesn't exist
* t/autohdrdry.sh: Here, rather than using "test ! -r FILE".
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Jim Meyering [Sat, 30 Jun 2012 11:53:37 +0000 (13:53 +0200)]
texi: clean after Texinfo manuals in $(SUBDIRS) directories correctly
Fixes the regression exposed by previous commit 'v1.12.1-165-g498492f'.
* automake.in (handle_texinfo_helper): Add $infobase.{t2d,t2p}
to @mostly_cleans, but *without* the '$relative_dir/' prefix.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 14:37:06 +0000 (16:37 +0200)]
coverage: regression in texinfo "make mostlyclean" with $(SUBDIRS)
After commit v1.12.1-91-g205c757 of 2012-06-20, "texi: require
Texinfo >= 4.9, related enhancements", the presence of a Texinfo manual
'manual.texi' in a subdir (say 'doc/') of a package using a recursive
make setup would cause "make distcheck" to fail, due to the presence of
the 'manual.t2d/' directory created by texi2dvi. That directory would
not be correctly removed because the 'mostlyclean' rule would run, from
within the 'doc/' sub-directory, "rm -rf doc/manual.t2d", instead of
the expected (and correct) "rm -rf manual.t2d".
Reported by Jim Meyering:
<http://lists.gnu.org/archive/html/automake-patches/2012-06/msg00203.html>
* t/txinfo21.sh: Enhance to expose the issue.
* t/txinfo-no-clutter.sh: Likewise, and other miscellaneous improvements.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 11:42:10 +0000 (13:42 +0200)]
Merge branch 'maint'
* maint:
tests: fix a spurious failure
configure: fix detection of POSIX shell to work in a VPATH build
tests: prefer "test ! -e FILE" to check that a file doesn't exist
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 10:12:43 +0000 (12:12 +0200)]
tests: fix a spurious failure
* t/parallel-tests-dry-run-2.sh: Here.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 09:28:24 +0000 (11:28 +0200)]
configure: fix detection of POSIX shell to work in a VPATH build
* configure.ac: When checking whether "test -e" works, use 'config.log',
not 'configure', as the witness file, because the latter does not exist
in the current directory during a VPATH build.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 22:48:11 +0000 (00:48 +0200)]
tests: prefer "test ! -e FILE" to check that a file doesn't exist
Once, for the sake of (at least) Solaris 10 /bin/sh, we had to use
"test ! -f FILE" or "test ! -r FILE" or "test ! -d FILE" instead,
because the that shell's 'test' built-in didn't grok the '-e' option.
Note however that we still can't use "test ! -e" in the Makefile recipes
used in the test cases; that is because those recipes are run with the
shell detected by 'configure', and Autoconf-generated configure scripts
do no guarantee to find or provide a POSIX-compatible shell.
* Several tests: Adjust.
* t/yacc-clean-cxx: Adjust, and remove a couple of useless commands.
* t/parallel-tests-dry-run-2.sh: Adjust, and add invocation to
"make -n" forgotten in previous versions of the test.
* t/txinfo26.sh: Adjust, and don't bother to skip the test when it's
run in a directory whose absolute path contain whitespace: that setup
is not supported anyway.
* t/maken3.sh: Adjust, and fix a typo that could cause a minor false
negative.
* t/test-trs-recover2.sh: Prefer using 'skip_' with a suitable error
message over a bare 'exit 77'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 21:35:18 +0000 (23:35 +0200)]
Merge branch 'maint'
* maint:
configure: move a misplaced "section" comment
configure: clump check for ${var%...} and ${var#...} expansion together
cosmetics: improve wording of a couple of configure messages
configure: the testsuite shell must support 'test -e' and 'test ! -e'
tests: remove stale workarounds for Solaris /bin/sh
Stefano Lattarini [Thu, 28 Jun 2012 21:32:21 +0000 (23:32 +0200)]
configure: move a misplaced "section" comment
* configure.ac (Create output files): This, move it towards the end
of the script.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 21:29:51 +0000 (23:29 +0200)]
configure: clump check for ${var%...} and ${var#...} expansion together
And together with those for the ${var%%...} and ${var##...} expansions.
After all, it is basically impossible to find a shell that support one
of them but not the others.
Suggestion by Eric Blake.
* configure.ac: Here.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 20:53:03 +0000 (22:53 +0200)]
cosmetics: improve wording of a couple of configure messages
* configure.ac: Fix a couple of messages so that the configure
output changes from this:
checking whether /bin/sh "set -e" preserves exit traps... yes
checking whether /bin/sh "set -x" corrupts stderr... no
to this:
checking whether /bin/sh preserves exit traps with "set -e"... yes
checking whether /bin/sh corrupts stderr with "set -x"... no
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 20:49:28 +0000 (22:49 +0200)]
configure: the testsuite shell must support 'test -e' and 'test ! -e'
* configure.ac: Require that the shell that is to be selected to run
the testsuite understands "set -e" and "set ! -e".
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 19:52:37 +0000 (21:52 +0200)]
tests: remove stale workarounds for Solaris /bin/sh
Our testsuite cannot be run with that shell anymore (as it is
not POSIX-compliant).
* t/tap-more.sh: Remove outdated workarounds for Solaris /bin/sh.
* t/self-check-exit.tap: Likewise.
* t/ansi2knr-no-more.sh: Likewise.
* t/add-missing.tap: Likewise.
* t/dist-auxfile.sh: Likewise.
* t/test-driver-custom-multitest-recheck2.sh: Likewise.
* t/ax/test-init.sh: Remove obsolete references to Solaris
/bin/sh.
* t/confh5.sh: Likewise.
* t/uninstall-fail.sh: Likewise. And update comments about
quirks of Solaris /bin/ksh and /usr/xpg4/bin/sh.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 16:38:02 +0000 (18:38 +0200)]
Merge branch 'maint'
* maint:
tests init: don't bother allowing '$me' to be overridable
tests init: typofixes in comments
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 16:21:33 +0000 (18:21 +0200)]
tests init: don't bother allowing '$me' to be overridable
We once used that feature in our wrapper tests; but now (and probably
even since commit 'v1.11-1308-g375f23d' of 2011-09-08, "testsuite:
revamp generation of autogenerated tests") it is not needed anymore.
By removing it we can simplify our growingly complex testsuite framework
a little.
* t/ax/test-inist.sh ($me): Do not initialize it here (and only if not
already set), instead ...
* defs-static.in ($me): ... initialize it here unconditionally.
Do not check anymore that $me doesn't come from the environment: that
wouldn't cause any problem now.
Now that '$me' is defined early, prefer it over 'argv0' in early error
messages, both here ...
* defs: ... and here.
* Makefile.am (AM_TESTS_ENVIRONMENT): Do not bother "nullifying" $me
anymore.
* t/self-check-env-sanitize.tap: Adjust.
* t/self-check-me.tap: Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 15:50:20 +0000 (17:50 +0200)]
tests init: typofixes in comments
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 15:41:27 +0000 (17:41 +0200)]
Merge branch 'maint'
* maint:
tests: one test was not executable, make it so
readme: fix typo in t/README: s/$((...)/$((...))/
tests: don't skip if $(abs_builddir) or $(abs_srcdir) contain whitespace
tests: avoid spurious maintainer-check failures
tests: remove obsolete hacks around maintainer-check false positives
Stefano Lattarini [Thu, 28 Jun 2012 15:40:10 +0000 (17:40 +0200)]
tests: one test was not executable, make it so
* t/subdir-order.sh: This test.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 15:32:15 +0000 (17:32 +0200)]
readme: fix typo in t/README: s/$((...)/$((...))/
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 15:08:34 +0000 (17:08 +0200)]
tests: don't skip if $(abs_builddir) or $(abs_srcdir) contain whitespace
We used to explicitly skip libtool and gettext tests if the absolute
path of the builddir or of the srcdir which Automake was configured
with contained any whitespace (or other metacharacters).
But several other tests would spuriously fail in such an unholy setup.
To be precise, it would cause 61 'FAIL's and 42 'ERROR's in the whole
Automake testsuite.
The fact that, as of today, nobody has reported any failure of this kind
means that (thankfully) nobody is building automake with $(abs_srcdir)
or $(abs_builddir) mangled by whitespace. So, instead of trying to cater
to such a broken setup consistently, we just drop the extra check in the
libtool/gettext tests.
In case someone will ever reports a failure due to extra whitespace in
either $(abs_srcdir) or or $(abs_builddir), we will simply enhance our
'configure.ac' to bail out flatly and loudly at such a setup.
* t/ax/test-init.sh: Simplify accordingly.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 14:43:43 +0000 (16:43 +0200)]
tests: avoid spurious maintainer-check failures
* t/ax/test-init.sh: Here, by adding extra quoting for two
occurrences of the string "perl".
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 12:35:12 +0000 (14:35 +0200)]
tests: remove obsolete hacks around maintainer-check false positives
* gen-testsuite-part, t/test-trs-recover.sh: Here.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 11:27:49 +0000 (13:27 +0200)]
Merge branch 'maint'
* maint:
tests: simpler workaround for shells losing the exit status in exit trap
+ Extra non-trivial edits:
* Several tests: Adjusted to use 'exit' rather than 'Exit'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 11:05:29 +0000 (13:05 +0200)]
Merge branch 'simplify-exit-trap-workaround' into maint
* simplify-exit-trap-workaround:
tests: simpler workaround for shells losing the exit status in exit trap
+ Extra non-trivial edits:
* t/am-missing-prog.sh: Use 'exit, not 'Exit'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 09:20:43 +0000 (11:20 +0200)]
cosmetics: remove trailing whitespace in some files
* lib/missing, t/comment7.sh, t/objc-flags.sh, t/objcxx-flags.sh,
t/perf/testsuite-summary.sh, t/self-check-explicit-skips.sh: Here.
Prompted by a report from Karl Berry.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 09:09:05 +0000 (11:09 +0200)]
coverage: enhance tests in 'missing' script a little
* t/am-missing-prog.sh: Here, by also verifying its expected
exit status.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 08:59:45 +0000 (10:59 +0200)]
Merge branch 'maint'
* maint:
coverage: tests AM_MISSING_PROG usage
docs: document AM_MISSING_PROG
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 28 Jun 2012 08:55:13 +0000 (10:55 +0200)]
coverage: tests AM_MISSING_PROG usage
Now that AM_MISSING_PROG is documented, we want to make sure it
works as expected when used in third-party code.
* t/am-missing-prog.sh: New test.
* t/ammissing: Rename ...
* t/am-macro-not-found.sh: ... like this, to avoid confusion (this
test has nothing to do with the 'missing' script nor with the
'AM_MISSING_PROG' macro).
* t/list-of-tests.mk: Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Eric Blake [Wed, 27 Jun 2012 21:55:14 +0000 (15:55 -0600)]
docs: document AM_MISSING_PROG
Addresses automake bug#11793.
This macro has been present for a long time, and coreutils has been
relying on it despite no documentation, which argues that it is stable
enough to be worth documenting.
Furthermore, since we are hoping to change our preferred invocation
from 'missing --run program' to 'missing program' in a future version
of automake, we need a way for packages to consistently get the
preferred invocation form rather than open-coding a call to 'missing'.
In particular, the Autoconf manual would love to recommend this macro
when discussing how to integrate an autotest suite with automake.
* doc/automake.texi (Public Macros): Document AM_MISSING_PROG.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Wed, 27 Jun 2012 13:29:42 +0000 (15:29 +0200)]
Merge branch 'maint'
* maint:
tests: fix a spurious failure with Solaris make
tests: avoid several spurious failures on Solaris
tests: avoid a spurious failure on NetBSD
Stefano Lattarini [Wed, 27 Jun 2012 13:07:03 +0000 (15:07 +0200)]
tests: fix a spurious failure with Solaris make
* t/subdir-order.sh: Run make in parallel only if the make implementation
truly supports it.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Wed, 27 Jun 2012 10:47:17 +0000 (12:47 +0200)]
parallel-tests: "recheck" behaves better in case of compilation failures
With this change, the "recheck" target behaves better in the face of build
failures related to previously failed tests. For example, if a test is a
compiled program that must be rerun by "make recheck", and its compilation
fails, that test will still be rerun by further "make recheck" invocations.
Previously, its '.log' and '.trs' would have both been lost, so that the
test would have not been re-run.
This change fixes automake bug#11791.
* NEWS: Update.
* lib/am/check.am (recheck, check-TESTS): Adjust to cater to scenario
described above.
* t/parallel-tests-recheck-pr11791.sh: New test.
* t/list-of-tests.mk: Add it.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Wed, 27 Jun 2012 09:13:54 +0000 (11:13 +0200)]
scripts: quote 'like this', not `like this'
* lib/test-driver.sh: Here.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 26 Jun 2012 18:16:21 +0000 (20:16 +0200)]
Merge branch 'missing-not-touch-just-warn'
* missing-not-touch-just-warn:
missing: --run is supported again (as a no-op) for use by older automake
Eric Blake [Tue, 26 Jun 2012 16:40:39 +0000 (10:40 -0600)]
missing: --run is supported again (as a no-op) for use by older automake
Commit v1.12.1-87-ga22717d of 2012-06-21 ("missing: do not touch
timestamps; only warn for out-of-date files") has removed the '--run'
option, since our new preferred calling conventions now imply it; but
if a newer 'missing' is mixed with an already built project that used
an older Automake version (this happened in practice for GNU m4; see:
<http://lists.gnu.org/archive/html/bug-m4/2012-06/msg00001.html>), then
the 'Makefile' in that project will fail due to passing the '--run'
option when trying to bring the project up-to-date.
* lib/missing: Parse and ignore '--run'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 25 Jun 2012 08:40:39 +0000 (10:40 +0200)]
Merge branch 'missing-not-touch-just-warn'
* missing-not-touch-just-warn:
missing: don't cater to 'configure.in' in our advice
missing: better tips about missing tools
Stefano Lattarini [Mon, 25 Jun 2012 08:38:58 +0000 (10:38 +0200)]
missing: don't cater to 'configure.in' in our advice
The use of 'configure.in' as autoconf input now deprecated the development
versions of both Automake and Autoconf, and we'd like to speed up its
demise.
* missing: In the advice displayed in case some autotools are detected to
be missing, refer to 'configure.ac' unconditionally, instead of referring
to 'configure.in' when that file exists in the current directory (and no
'configure.ac' does).
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 24 Jun 2012 08:36:15 +0000 (10:36 +0200)]
tests: simpler workaround for shells losing the exit status in exit trap
Now that we can assume our tests are run by a decent POSIX shell, we
can simplify our workaround aimed at having the exit status propagated
correctly to the code in the exit trap. Unfortunately, we cannot
dispense with such a workaround altogether, because it's still required
by some shells we need to support (at least Solaris 10 /bin/ksh and
/usr/xpg4/bin/sh).
For more information about the need of that workaround, see the entry
about 'trap' in the section "Limitations of Shell Builtins" in the
Autoconf manual:
<http://www.gnu.org/software/autoconf/manual/autoconf.html#trap>
The new workaround has been tested successfully with the following
shells:
- Bash 4.1
- Bash 3.2
- Bash 3.0
- Bash 2.05b
- dash 0.5.5.1
- dash 0.5.2
- AT&T Ksh 93u (from official Debian package)
- MirBSD Korn Shell 40.2 (from official Debian package)
- Solaris 9, 10 and 11 /bin/ksh
- Solaris 9, 10 and 11 /usr/xpg4/bin/sh
- NetBSD 5.1 /bin/sh
- NetBSD 5.1 /bin/ksh
* t/ax/test-init.sh (Exit): Rename ...
(_am_exit): ... like this.
(exit): New alias for '_am_exit'. We cannot simply redefine 'exit'
as a shell function, because some shells (dash 0.5.5.1, Solaris 10
/bin/ksh and /usr/xpg4/bin/sh) do not allow it.
(_am_exit, trap): Add extra escaping for 'exit' calls, to ensure we
really invoke the 'exit' builtin and not our alias with the same
name.
* configure.ac: Check that the shell selected to run our testsuite
supports aliases named like shell builtins.
* t/REAMDE: Adjust.
* All tests: Adjust, by simply using 'exit' instead of 'Exit'.
* t/self-check-explicit-skips.sh: Adjust: the first usage of 'exit'
after it has been redefined as an alias must be on a new line w.r.t.
that where the alias is defined, in order for the redefinition to be
honored.
* syntax-checks.mk (sc_tests_Exit_not_exit): Delete.
(sc_tests_exit_not_Exit): New.
(syntax_check_rules): Adjust.
(sc_tests_automake_fails): Simplify the recipe a little.
* Several tests: Remove now useless spurious quoting once required
to placate the 'sc_tests_Exit_not_exit' maintainer check.
* gen-testsuite-part: Likewise. Also, avoid uses of 'Exit' in the
generated scripts.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 24 Jun 2012 15:57:10 +0000 (17:57 +0200)]
tests: avoid several spurious failures on Solaris
* t/ax/is_newest: Rewrite to be Bourne-compatible, for /bin/sh shells like
Solaris' that are not POSIX-conforming. The script is so small that such
a rewrite is easier than going through the hoops that would be required to
ensure this script is always executed with a POSIX shell.
* t/ax/is: Add a comment stating that this script is to be kept Bourne
compatible as well.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 24 Jun 2012 14:52:51 +0000 (16:52 +0200)]
tests: avoid a spurious failure on NetBSD
* t/maken.sh: Do not expect the timestamp of the current directory
to be unchanged after a "make -n".
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 24 Jun 2012 08:12:43 +0000 (10:12 +0200)]
Merge branch 'maint'
* maint:
tests: fix automatic re-execution of tests with Zsh
tests: drop support for older Zsh shells
tests: allow AM_TEST_RUNNER_SHELL to be overridden
tests: fix setup for older Zsh
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 23 Jun 2012 11:42:10 +0000 (13:42 +0200)]
tests: fix automatic re-execution of tests with Zsh
* defs: Use '$argv0' instead of '$0'. With Zsh not started right
away in Bourne-compatibility mode, the latter will be the path not
of the test script itself, but of the file it's currently sourcing
-- i.e., in our case, './defs'. This would cause the automatic
re-execution code to execute './defs' (basically a no-op) rather
than re-run the test correctly.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 23 Jun 2012 09:16:08 +0000 (11:16 +0200)]
tests: drop support for older Zsh shells
* defs-static.in: Here. The fact that such support has been broken for
almost a year (only fixed by today's commit 'v1.12.1-57-gf1e0300'),
causing no bug reports from anyone, shows that such support is not truly
warranted. And it will get in the way of future improvements in the
handling of the exit trap (because bugs in older Zsh versions will
prevent some of our planned improvements). So just drop it.
* t/README: Remove obsolete advice for working around bugs in older
versions of Zsh; instead, indicate version 4.3 is the oldest Zsh now
supported.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 23 Jun 2012 08:39:33 +0000 (10:39 +0200)]
tests: allow AM_TEST_RUNNER_SHELL to be overridden
* defs-static.in: Here. This will make it easier for the maintainer
to run some self checks (like those in 't/self-check-exit.tap') with
different shells, to look for possible portability problems. Fix a
typo (doubled "the") while we are at it.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 23 Jun 2012 08:34:29 +0000 (10:34 +0200)]
tests: fix setup for older Zsh
* defs-static.in: After the addition of TAP-based tests and our renaming
of "simple" test scripts from 'tests/foo.test' to 't/foo.sh', a test name
is valid if it matches the wildcard "*.sh" or "*.tap", not the wildcard
"*.test". Adjust accordingly.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 23 Jun 2012 07:04:46 +0000 (09:04 +0200)]
missing: better tips about missing tools
* lib/missing: Try to point the user to the home page of such tools
where possible. Also, make clear that some tools (e.g., aclocal or
autoheader) are distributed as part of bigger projects (resp. automake
and autoconf, in those cases). While at it, refactor and re-format
the existing code heavily, in particular introducing
(give_advice): ... this new function in the process.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 22:32:30 +0000 (00:32 +0200)]
Merge branch 'missing-not-touch-just-warn'
* missing-not-touch-just-warn:
missing: do not touch timestamps; only warn for out-of-date files
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 22:16:26 +0000 (00:16 +0200)]
Merge branch 'maint'
* maint:
tests: avoid one last `...` command substitution in 'test-init.sh'
maintcheck: guard against `...` for command substitution in test cases
tests: more uses of $(...) over `...` for command substitution
cosmetics: quote `like this', not 'like this', in a couple of tests
readme: clarify/extend few entries in 't/README'
readme: better separation of entries in 't/README'
readme: subsections "Do" and "Do not" in 't/README' merged
tests: new requirement 'grep-nonprint'
cosmetics: fix description of an expected error message in a test
tests: assume automake quotes 'like this', not `like this'
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 22:12:08 +0000 (00:12 +0200)]
tests: avoid one last `...` command substitution in 'test-init.sh'
* t/ax/test-init.sh (me): In the definition of this variable. This
also shave off a couple of forks, and the need for a sanity check
only required in fringe situations.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 22:06:10 +0000 (00:06 +0200)]
maintcheck: guard against `...` for command substitution in test cases
But still allow them in configure.ac, Makefile.am and shell scripts
created or used inside test cases itself, because Autoconf (as of
version 2.69) does not yet ensure that $CONFIG_SHELL will be set to
a proper POSIX shell.
* syntax-checks.mk (sc_tests_command_subst): New check.
(syntax-check_rules): Add it.
* t/tap-global-log.sh: Minimal tweakings to avoid triggering the
new maintainer check.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 21:31:00 +0000 (23:31 +0200)]
tests: more uses of $(...) over `...` for command substitution
Somehow missed by the previous changes. No big deal, fix them now.
* t/ax/depcomp.sh: Here.
* t/autodist.sh: And here.
* t/autodist-no-duplicate.sh: And here.
* t/autodist-subdir.sh: Ad here.
* t/remake11.sh t/self-check-me.tap: And here.
* t/perf/testsuite-summary.sh: And here.
* t/perf/testsuite-recheck.sh: And here.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 21:18:54 +0000 (23:18 +0200)]
cosmetics: quote `like this', not 'like this', in a couple of tests
* t/ansi2knr-no-more.sh: Here.
* t/aclocal-verbose-install.sh: And here.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 21:14:38 +0000 (23:14 +0200)]
readme: clarify/extend few entries in 't/README'
* t/README (Writing test cases): Here.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 21:06:55 +0000 (23:06 +0200)]
readme: better separation of entries in 't/README'
* t/README (Writing test cases): Prepend different entries with a '*'
character acting like a bullet in a list. This make different entries
better separated, visually-wise. Minor related reformatting.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 21:01:37 +0000 (23:01 +0200)]
readme: subsections "Do" and "Do not" in 't/README' merged
* t/README (Writing test cases): Merge subsections "Do" and "Do not".
The distinction was rather artificial, and more confusing than helpful.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 20:31:35 +0000 (22:31 +0200)]
tests: new requirement 'grep-nonprint'
* t/ax/test-inist.sh ($esc): New, a literal escape character.
(grep-nonprint): New requirement, check that the grep implementation
available that can handle non-printing characters correctly.
* t/color.sh: Use it instead of hand-rolled equivalent, and do not
(re)define '$esc' explicitly.
* t/color2.sh: Likewise.
* t/tap-color.sh: Likewise.
* t/vtexi4.sh: Likewise.
* t/parallel-tests-no-color-in-log.sh: Likewise. Also prefer the use
of grep over that of $FGREP, because the new requirement only check
grep, and ensure we only grep non-printing characters from a pipe, to
avoid hitting a BSD grep limitation.
* t/parallel-tests-reset-term.sh: Likewise.
* t/ax/tap-summary-aux.sh: Use '$esc' instead of hard-coding the
literal escape character.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 19:59:26 +0000 (21:59 +0200)]
cosmetics: fix description of an expected error message in a test
* t/vartypo2.sh: Here. This reflects the change from `this style'
of quoting to 'this style'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 19:44:15 +0000 (21:44 +0200)]
tests: assume automake quotes 'like this', not `like this'
* t/add-missing.tap: Here. This slightly simplifies and/or enhances
some grepping checks on automake diagnostic.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 16:55:01 +0000 (18:55 +0200)]
Merge branch 'maint'
* maint:
tests: prefer using 'is_newest' over 'ls -t' hacks
tests: implement is_newest as an auxiliary script, not shell function
tests: fix some spurious failures in VPATH setup
tests: work in VPATH setup again
Stefano Lattarini [Fri, 22 Jun 2012 16:15:21 +0000 (18:15 +0200)]
tests: prefer using 'is_newest' over 'ls -t' hacks
To verify that a file 'new' is newer than the file 'old', it's much
cleaner to use "is_newest new old" rather than the more clumsy
"ls -t". Adjust several of our tests accordingly.
* syntax-checks.mk (sc_tests_ls_t): New check, guard against uses
of "ls -t" and similar.
(syntax_check_rules): Add it.
* t/maken.sh: Adjust.
* t/autohdr4.sh: Likewise.
* t/extradep2.sh: Likewise.
* t/lex-depend-cxx.sh: Likewise.
* t/extradep.sh: Likewise.
* t/yacc-depend2.sh: Likewise.
* t/yacc-pr204.sh: Likewise.
* t/lex-pr204.sh: Likewise.
* t/yacc8.sh: Likewise.
* t/acloca13.sh: Likewise.
* t/lex-depend.sh: Likewise, and enhance.
* t/acloca14.sh: Likewise.
* t/aclocal7.sh: Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 14:18:28 +0000 (16:18 +0200)]
tests: implement is_newest as an auxiliary script, not shell function
This will allow to also use it in the makefile recipes used in our
test cases.
* t/ax/test-init.sh (is_newest): Remove.
* t/ax/is_newest: New script.
* Makefile.am (EXTRA_DIST): Add it.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 13:34:12 +0000 (15:34 +0200)]
tests: fix some spurious failures in VPATH setup
* t/self-check-cleanup.tap: No need to copy the 'ax/t/test-init.sh'
file over in our temporary directory.
* t/self-check-reexec.tap: Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 13:14:20 +0000 (15:14 +0200)]
tests: work in VPATH setup again
* defs: Drop overly paranoid sanity checks that was causing all the tests
to fail spuriously when run in a VPATH setup, with a message like:
"../t/nodef.sh: ./t/ax/test-init.sh: not found in current directory".
Those checks looked for invariants that, even if broken, would still
cause the test to fail very early and with a pretty clear error message
anyway.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 12:52:21 +0000 (14:52 +0200)]
Merge branch 'maint'
* maint:
tests: automatic re-execution works for non-POSIX shells too
tests: use more POSIX shell features our test scripts
+ Extra non-trivial edits:
* t/ax/test-init.sh: Apply the diffs between past versions of
'defs' in maint and in master; i.e., remove handling of $required
entries 'texi2dvi-o' and 'makeinfo-html', and adjust to the fact
that the parallel testsuite harness is now the default.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 22 Jun 2012 09:40:39 +0000 (11:40 +0200)]
tests: automatic re-execution works for non-POSIX shells too
Some inferior shells are too greedy in parsing their input. If a
non-POSIX Bourne shell (like Solaris 10 /bin/sh) was used to launch
one of our test scripts, it would fail unconditionally, because it
unexpectedly saw some (by it) unsupported constructs, notwithstanding
such constructs being placed *after* the code implementing automatic
test re-execution with a better shell. In conclusion, the shell
bailed out like this:
$ /bin/sh t/ar.sh
$ t/ar.sh: syntax error at line 257: `is_newest_files=$' unexpected
By moving all the potentially problematic code in a separate file, to
be sourced only after the code for automatic re-execution with a better
shell, we ensure that inferior shell cannot see such code by mistake.
* defs: All code after automatic shell re-execution moved out ...
* t/ax/test-init.sh: ... to this new file.
* syntax-checks.mk (xdefs): Add it.
* Makefile.am (dist_check_DATA): Add it. Also move in 'defs' from
a less explicit 'check_DATA' declaration.
(nodist_check_DATA): Move in 'defs-static' from a less explicit
'check_DATA' declaration.
(check_DATA): Remove.
* t/self-check-sanity.sh: Remove, it was actually too hacky and brittle,
sanity-checking situations we don0t actually care about.
* t/list-of-tests.mk: Adjust.
* t/self-check-explicit-skips.sh: Adjust, and fix a botched heading
comments while we are at it.
* t/self-check-reexec.tap: Adjust.
* t/self-check-cleanup.tap: Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 14 Jun 2012 11:13:58 +0000 (13:13 +0200)]
tests: use more POSIX shell features our test scripts
Since commit 'v1.12-36-g2d68fd9' of 2012-05-07, "configure: search a
sturdy POSIX shell to be used in the testsuite", the shell running
our test script is assured to be a POSIX-conforming shell, so we can
use the more modern and flexible idioms and features that we couldn't
use when we also aimed at compatibility with non-POSIX Bourne shells,
like Solaris /bin/sh.
* t/README: Suggest to use POSIX shell features liberally in test cases,
with possible exception of Makefile recipes and configure shell code.
* Several tests: Adjust to use more POSIX shell features; e.g., $(...)
rather than `...`, $((...)) rather than `expr ...`, "if ! CMD; then ..."
instead of "if CMD; then :; else ...", and so on.
In several places, when using the 'test' built-in, prefer '-eq' over
'=' for numeric comparisons, and prefer "grep -c PATTERN FILE" over
"grep PATTERN FILE | wc -l".
Throw in other low-hanging easy improvements and fixlets while we are
at it.
* t/ax/depcomp.sh, t/ax/tap-summary-aux.sh, t/ax/tap-functions.sh,
defs, defs-static.in: Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 21 Jun 2012 11:15:05 +0000 (13:15 +0200)]
Merge branch 'maint'
* maint:
docs: avoid failures with development version of Texinfo (4.13.90)
typofix: s/test derivers/test drivers/ in check.am comments
typofix: s/env/even/ in comments in GNUmakefile
Stefano Lattarini [Thu, 21 Jun 2012 11:13:04 +0000 (13:13 +0200)]
docs: avoid failures with development version of Texinfo (4.13.90)
* doc/automake-history.texi: Use '@item' instead of '@itemx' where
appropriate.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 15 Jun 2012 09:13:00 +0000 (11:13 +0200)]
missing: do not touch timestamps; only warn for out-of-date files
Before this change, the missing script had a twofold role:
- it warned the user if some required maintainer tools was missing,
or too old;
- in such a case, it tried to "fix" the timestamp of the files that
should have been rebuilt by that tool (without actually updating
the file contents, of course), to allow the build to continue.
The second capability used to be quite useful in the days when most
projects committed files generated by maintainer-only tools in their
VCS repository (today the trend is not to keep such generated files
VCS-committed anymore). In such a setup, the "timestamp-fixing"
capability of 'missing' was quite useful, in that it allowed users
lacking some required maintainer tool to build from a VCS checkout
in the face of skewed timestamps (as could have been caused by
"cvs update" or "git checkout").
But then, when the automatic remake rules kicked in due to the
generated files being *actually out-of-date* (e.g., because the user
had modified 'configure.ac' but lacked a modern-enough autoconf to
rebuild it), that behaviour of 'missing' caused the same problem that
plagued AM_MAINTAINER_MODE; i.e., the user would get non-dependable
builds and inconsistent statuses of the build tree -- changes to
source files don't reflect on generated files, and this can be very
confusing and cause hard-to-spot errors).
So we now believe that the best approach to deal with timestamp-related
issues is not to have 'missing' to "automagically" try to resolve
them (with all the risk and brittleness entailed), but rather to
suggest those projects still keeping generated files committed in their
VCS to provide a proper (say) 'fix-timestamp.sh' script that touches
the timestamp of the checked-out files, to ensure no spurious rebuild
will be triggered. As a bonus, such a script can be more aware of the
particularities, nooks and corner cases of a project, and thus more
reliable than the old 'missing' script.
An example of this approach is offered by GNU awk (release 4.0.1, Git
tag 'gawk-4.0.1', commit
b85b04e8). The GNU awk maintainers commit
the Autotools-generated files (configure, Makefile.in, etc.) and other
generated in the project's Git repository, but offer a useful script
'bootstrap.sh' that fixes the timestamps of those files, to ensure no
useless remake is triggered in a freshly cloned repository:
#! /bin/sh
# bootstrap.sh --- touch relevant files to avoid out-of-date issues
# in Git sandboxes
touch aclocal.m4
find awklib -type f -print | xargs touch
sleep 1
touch configure
sleep 2
touch configh.in
sleep 1
touch test/Maketests
find . -name Makefile.in -print | xargs touch
touch doc/*.info
touch po/*.gmo
touch po/stamp-po
touch awkgram.c
touch command.c
touch version.c
A similar, simplified script is also reported as an example in the
manual.
* NEWS: Update.
* doc/automake.texi (Auxiliary Programs, maintainer-mod): Update.
(CVS): Do not suggest that 'missing' can "automagically" fix botched
timestamp due to a "cvs update"; this isn't true anymore. Give an
example of a custom 'fix-timestamp.sh' script that can be used to
obtain the same effect (in a slightly more laborious but also more
explicit and less brittle way). Fix some minor typos and improper
wordings while we are at it.
* lib/missing: Basically rewritten to implement the new semantics.
As a side effect (one of the several), the '--run' option is no more
required nor recognized.
* m4/missing.m4 (AM_MISSING_HAS_RUN): Enhance the test on '$MISSING'
to ensure it actually provides the new semantics (by trying the new
"witness" option '--is-lightweight').
* lib/am/distdir.am (distdir): No need anymore to check for "bad"
distributed man pages that were actually dummy stubs generated by
the 'missing' script.
* t/missing4.sh: Rename ...
* t/remake-aclocal-version-mismatch.sh: ... like this.
* t/missing2.sh: Rename ...
* t/missing-version-mismatch.sh: ... like this, and adjust to the
new semantics.
* t/missing3.sh: Adjust to the new semantics.
* t/man4.sh: Remove as obsolete.
* t/missing.sh: Likewise.
* t/missing5.sh: Likewise.
* t/txinfo30.sh: Likewise.
* t/man6.sh: Adjust grepping checks.
* t/remake6.sh: Likewise.
* t/list-of-tests.mk: Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Thu, 21 Jun 2012 09:43:54 +0000 (11:43 +0200)]
typofix: s/test derivers/test drivers/ in check.am comments
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Wed, 20 Jun 2012 21:32:44 +0000 (23:32 +0200)]
typofix: s/env/even/ in comments in GNUmakefile
Spotted by Eric Blake.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Wed, 20 Jun 2012 16:35:57 +0000 (18:35 +0200)]
Merge branch 'maint'
* maint:
bootstrap: overhaul and improve
docs: quote 'like this', not `like this'
Stefano Lattarini [Wed, 20 Jun 2012 16:28:02 +0000 (18:28 +0200)]
bootstrap: overhaul and improve
This fixes several weaknesses and buglets in the 'bootstrap' convenience
target offered in GNUmakefile (and its supporting code). Refer to the
extensive code comments in there for more details.
* GNUmakefile: Almost completely rewritten.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>