* tests/depmod-data.test: Use creative quoting to avoid
spuriously triggering the `sc_tests_Exit_not_exit' maintainer
check. Commit `v1.11-900-g3453b8e' attempted to fix it, but
succeeded only partially.
* tests/cond33.test: Fix header comments, not to reference
obsolescent make variable `$(mkdir_p)'.
* tests/cond4.test: Rewrite "$MAKE exp=..." as "exp=.. $MAKE -e",
to please `sc_tests_overriding_macros_on_cmdline'
* tests/cond19.test: Likewise.
* tests/cond32.test: Likewise.
* tests/add-missing.test: Use "AUTOMAKE_fails" instead of
"$AUTOMAKE ... && Exit 1", to please `sc_tests_automake_fails'.
* Makefile.am (sc_tests_plain_aclocal, sc_tests_plain_perl,
sc_tests_plain_autoconf, sc_tests_plain_automake,
sc_tests_plain_autoupate): Be stricter in matching an erroneous
literal command, i.e., `aclocal', `automake', `perl', etc.
* master:
check: don't use multi-line coloring for the report
ansi2knr: deprecate, it will go away in the next major release
docs: primary/prefix combination "pkglib_PROGRAMS" is now invalid
docs: replace obsolete @vindex entry with a useful one
tests: more checks on portable fd redirection in TESTS_ENVIRONMENT
docs: AM_DISTCHECK_CONFIGURE_FLAGS is for corner cases
* maint:
check: don't use multi-line coloring for the report
ansi2knr: deprecate, it will go away in the next major release
docs: primary/prefix combination "pkglib_PROGRAMS" is now invalid
docs: replace obsolete @vindex entry with a useful one
docs: AM_DISTCHECK_CONFIGURE_FLAGS is for corner cases
Bert Wesarg [Fri, 17 Jun 2011 19:59:52 +0000 (21:59 +0200)]
check: don't use multi-line coloring for the report
"less -R" can't handle multi-line coloring as it is done for the
check reports of the serial and parallel testsuite, because of
performance reasons. Thus, color each line of the check report
by its own.
* lib/am/check.am (am__text_box): Accept colors for lines, and
color each line by its own.
[%?PARALLEL_TESTS%] $(TEST_SUITE_LOG): Let am__text_box handle
the line coloring.
[!%?PARALLEL_TESTS%] $(check-TESTS): Color each report line by
its own.
* THANKS: Update.
ansi2knr: deprecate, it will go away in the next major release
* doc/automake.texi: Loudly and repeatedly state that the old
de-ANSI-fication features are now deprecated and will be removed
in the next major Automake release. Other related adjustments.
* lib/Automake/Options.pm (_process_option_list ): Give a warning
in the `obsolete' category when the `ansi2knr' option is used.
* m4/protos.m4 (AM_C_PROTOTYPES): Deprecate this macro: a warning
in the `obsolete' category will be emitted it if is used.
* tests/ansi2knr-deprecation.test: New test.
* tests/Makefile.am (TESTS): Update.
* tests/ansi.test: Adjust, by calling autoconf and/or automake
with the `-Wno-obsolete' flag.
* tests/ansi10.test: Likewise.
* tests/ansi2.test: Likewise.
* tests/ansi3.test: Likewise.
* tests/ansi3b.test: Likewise.
* tests/ansi4.test: Likewise.
* tests/ansi5.test: Likewise.
* tests/ansi6.test: Likewise.
* tests/ansi7.test: Likewise.
* tests/ansi8.test: Likewise.
* tests/ansi9.test: Likewise.
* tests/cxxansi.test: Likewise.
* tests/libobj8.test: Likewise.
* NEWS: Update about the future planned backward-incompatibility
due to the removal of de-ANSI-fication feature.
docs: primary/prefix combination "pkglib_PROGRAMS" is now invalid
* doc/automake.texi (Program Sources): pkglib_PROGRAMS is not a
valid combination anymore, so don't document it. Inconsistency
introduced in commit `v1.11-373-g9ca6326'.
tests: more checks on portable fd redirection in TESTS_ENVIRONMENT
* tests/tests-environment-fd-redirect.test: Extend by also using
a perl script among the tests. Run the test shell script with
the `errexit' flag active. Export `VERBOSE' to yes when running
"make check", to give more debugging information in case of
failures. Look for a Korn Shell also in `/usr/bin', not on only
in `/bin'.
docs: AM_DISTCHECK_CONFIGURE_FLAGS is for corner cases
* doc/automake.texi (Checking the Distribution): Explain that the
developers should take care of making their code buildable without
requiring any special configure options, so that in general
AM_DISTCHECK_CONFIGURE_FLAGS shouldn't be used. Give an example
of where its use is legitimate.
* master:
tests: check portable fd redirection in TESTS_ENVIRONMENT
news: update w.r.t. introduction of AM_DISTCHECK_CONFIGURE_FLAGS
tests: optimize tests on primary/prefix mismatch for speed
Warnings about primary/prefix mismatch fixed and extended.
maintcheck: DISTCHECK_CONFIGURE_FLAGS can be defined on make cmdline
distcheck: add support for AM_DISTCHECK_CONFIGURE_FLAGS
docs: better documentation for silent make rules
* maint:
news: update w.r.t. introduction of AM_DISTCHECK_CONFIGURE_FLAGS
tests: optimize tests on primary/prefix mismatch for speed
Warnings about primary/prefix mismatch fixed and extended.
maintcheck: DISTCHECK_CONFIGURE_FLAGS can be defined on make cmdline
distcheck: add support for AM_DISTCHECK_CONFIGURE_FLAGS
docs: better documentation for silent make rules
tests: make test 'self-check-reexec.test' more portable
* tests/self-check-reexec.test: Rewrite not to require a Korn
Shell able to grok variable expansions such as `${.sh.version}';
Solaris 10 /bin/ksh fails on this for example. Instead, just
require bash and a shell that is not bash.
tests: check portable fd redirection in TESTS_ENVIRONMENT
* tests/tests-environment-fd-redirect.test: New test.
* tests/Makefile.am (TESTS): Update.
Motivated by coreutils bug#8846:
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8846>
See also following CC:ed thread on bug-autoconf list:
<http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00002.html>
* tests/cond31.test ($required): Remove `cc', it's not really
needed.
* tests/confh.test: Call autoheader too. The lack of this call
wasn't causing spurious failures because, when make was called,
the automatic remake rules somehow ended up invoking it on our
behalf.
* tests/fn99subdir.test: Use $subdirname throughout, instead of
${subdirname}, for consistency with the rest of the testsuite.
Avoid an unnecessary subshell, which could also cause spurious
passes, being guarded by a trailing `|| Exit 1', which neutralize
the `errexit' flag. Remove an unnecessary `|| Exit 1' guard.
* tests/insh2.test: Rewrite to avoid hackish Makefile.in munging,
and to also run configure and make.
test defs: fix ksh-related portability bug in warning messages
Running "make check" normally prints a diagnostic to the outermost
stderr (usually a tty) to explain why a test is skipped, thus
giving better and faster feedback to the user. It used to do
so by redirecting file descriptor 9 to stderr (via "exec 9>&2")
before invoking the test scripts, which then would write any skip
explanation to file descriptor 9 via the `skip_' function defined
in `tests/defs'.
However, various Korn Shells (at least Solaris 10's /bin/ksh and
Debian GNU/Linux's /bin/ksh) and the HP-UX's /bin/sh close open
file descriptors > 2 upon an `exec' system call; thus the effects
of "exec 9>&2" are cancelled upon fork-and-exec, so we would get
a "Bad file number" diagnostic and no skip explanation with those
shells.
The present change remedies this situation.
* tests/Makefile.am (AM_TESTS_ENVIRONMENT): Redirect more portably,
via a trailing "9>&2", rather than the prior "exec 9>&2; ...". Add
explanatory comments.
* tests/defs (stderr_fileno_): Update the advice in comments.
Based on commit v8.12-82-g6b68745 "tests: accommodate HP-UX and
ksh-derived shells" in GNU coreutils.
Further references, with lots of discussion:
<http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00002.html>
<http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/22488>
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8846>
Merge branch 'am-distcheck-configure-flags' into maint
* am-distcheck-configure-flags:
maintcheck: DISTCHECK_CONFIGURE_FLAGS can be defined on make cmdline
distcheck: add support for AM_DISTCHECK_CONFIGURE_FLAGS
tests: extend tests on `--add-missing' and `--copy' a bit
* tests/add-missing.test: Fix typo in heading comments. Try with
another testcase that install many (but not all) the auxiliary
scripts at once, and uses non-standard (but valid and documented)
setups (e.g., defining YACC in Makefile.am instead of calling
AC_PROG_YACC from configure.in).
* tests/copy.test: Reference `add-missing.test' in heading
comments. Try few more test scenarios.
tests: remove 'test_prefer_config_shell' from the environment
Since commit `v1.11-910-g7df1a9b', the once user-overridable
variable `$test_prefer_config_shell' has become an internal
detail, and the test scripts now complain and bail out if it is
set in the environment.
* tests/Makefile.am (AM_TESTS_ENVIRONMENT): Unset the variable
`test_prefer_config_shell' if it is set in the environment.
tests: autogenerate list of wrapped tests for `lib/' shell scripts
* tests/gen-config-shell-tests: New script, generates distributed
makefile snippet `tests/config-shell-tests.am' to list all tests
that use the `get_shell_script' function, with names mangled to
use suffix `-w.shtst', in ...
* tests/Makefile.am (config_shell_tests): ... this macro, whose
definition has been consequently removed from Makefile.am.
(EXTRA_DIST): Distribute the new script.
($(srcdir)/config-shell-tests.am): Generate using the new script.
(include): Include the `config-shell-tests.am' fragment.
* bootstrap: Invoke `tests/gen-config-shell-tests' to generate
`tests/config-shell-tests.am'.
* tests/.gitignore: Ignore `config-shell-tests.am'.
* tests/gen-parallel-tests: Fixlet in heading comments.
* tests/mdate5.test: Fetch the `mdate-sh' script using the
`get_shell_script' function, and run it directly instead of
using `$SHELL'.
* tests/mdate6.test: Likewise. Since we are at it, make checks
on the `mdate-sh' output stricter, remove now unneeded calls to
aclocal and automake and creation/extension of `configure.in',
`Makefile.am' and `textutils.tex' files, and add a trailing `:'
command.
* tests/Makefile.am (config_shell_tests): Add `mdate5-w.shtst'
and `mdate6-w.shtst'.
tests: optimize tests on primary/prefix mismatch for speed
* tests/primary-prefix-invalid-couples.test: Partial rewrite, in
order to use just a single automake invocation rather than one
invocation for each invalid primary/prefix couple. This improves
the test script execution time by an order of magnitude.
Since we are at it, throw in some other improvements to avoid
unrelated automake warnings and failures that could potentially
cause false positives w.r.t. the automake exit status.
Warnings about primary/prefix mismatch fixed and extended.
* automake.in (%standard_prefix): Add `doc' and `locale'.
Rename `pkgdatadir' to `pkgdata'. Similarly for`pkglibdir',
`pkgincludedir' and `pkglibexecdir'.
(handle_programs): List `pkglibexec', not `pkglib', among the
prefixes valid for the `PROGRAMS' primary.
(handle_data): List also `doc' among the prefixes valid for
the `DATA' primary. This is required by automake's own build
system.
* tests/dirforbid.test: Test removed, superseded by ...
* tests/primary-prefix-invalid-couples.test: ... this new test.
* tests/primary-prefix-valid-couples.test: New test.
* tests/primary-prefix-documented-valid.test: Likewise.
* tests/primary-prefix-force-valid.test: Likewise.
* tests/java3.test: Adjusted, and extended a bit.
* tests/Makefile.am (TESTS): Updated.
* NEWS: Updated.
testsuite: use 'fatal_' and 'framework_failure_' for hard errors
* tests/defs (require_xsi): Use `fatal_', not `framework_failure',
to report an invalid usage.
* tests/remake-gnulib-remove-header.test: Prefer using `fatal_'
with a proper error message over a direct call to `Exit 99'.
* tests/pr8365-remake-timing.test: Likewise.
* tests/cygnus-imply-foreign.test: Likewise.
* tests/missing6.test: Likewise.
* tests/cond8.test: Likewise.
* tests/cond33.test: Likewise.
* tests/python-virtualenv.test: Prefer using `framework_failure_'
with a proper error message over a direct call to `Exit 99'.
* tests/instspc-tests.sh: Prefer using `framework_failure_' and
`fatal_' over direct calls to `Exit 99'.
(fatal_): Define this (which is a simplified version of the one
in `tests/defs') for early uses (i.e., before `tests/defs'
gets sourced).
* tests/depmode-tests.sh: Likewise. Also, simplify the
'get_depmodes' function and calls to it accordingly.
maintcheck: DISTCHECK_CONFIGURE_FLAGS can be defined on make cmdline
* Makefile.am (sc_tests_overriding_macros_on_cmdline): It's now
acceptable that the test scripts override DISTCHECK_CONFIGURE_FLAGS
on the make command line. Update comments accordingly. Since we
are at it, make the relevant grepping rules slightly tighter.
distcheck: add support for AM_DISTCHECK_CONFIGURE_FLAGS
* doc/automake.texi (Checking the Distribution): Suggest to use
AM_DISTCHECK_CONFIGURE_FLAGS, not DISTCHECK_CONFIGURE_FLAGS, to
define (in the top-level Makefile.am) extra flags to be passed
to configure at "make distcheck" time; DISTCHECK_CONFIGURE_FLAGS
should be reserved for the user. Add proper `@vindex' directive.
Document that AM_DISTCHECK_CONFIGURE_FLAGS is not honoured in a
subpackage Makefile.am, but the flags in it are passed down to
the configure script of the subpackage.
* lib/am/distdir.am (distcheck): Also pass the flags in
$(AM_DISTCHECK_CONFIGURE_FLAGS) to the configure invocation.
Update comments.
* tests/defs.in.test (AM_DISTCHECK_CONFIGURE_FLAGS,
DISTCHECK_CONFIGURE_FLAGS): Unset in case they are exported in
the environment, they might improperly influence our testsuite.
* tests/distcheck-configure-flags.test: New test.
* tests/distcheck-configure-flags-am.test: Likewise.
* tests/distcheck-configure-flags-subpkg.test: Likewise.
* distcheck-hook.test: Likewise.
* distcheck-hook2.test: Likewise.
* tests/Makefile.am (TESTS): Update.
* doc/automake.texi (Options): Detailed description of the
automake option `silent-rules' moved from here ...
(Silent Make): ... into this new chapter, expanded, improved,
and subdivided into ...
(Make verbosity, Tricks For Silencing Make,
Automake silent-rules Option): ... these new sections.
(@menu, @detailmenu): Update.
* tests/silent-configsite.test: New test, checking that the
user can control default mode of silent-rules from config.site,
as is documented in the manual.
* tests/Makefile.am (TESTS): Updated.
Before this patch, the only way offered by tests/defs to
properly signal a hard error was the `framework_failure_'
function. But the error message issued by that function,
as its name would suggest, refers to a set-up failure in the
testsuite, while hard errors can obviously also be due to
other reasons. The best way to fix this inconsistency is to
introduce a new function with a more general error message.
Inspired by a recent similar change to Gnulib's tests/init.sh.
* tests/defs.in (fatal_): New function.
* tests/README (Section "Writing test cases" subsection "Do"):
Suggest the use of `fatal_', not of `framework_failure_', for
generic hard errors. The latter should be reserved for "real"
set-up failures.
* tests/self-check-me.test: Check that `$me' can be overridden
before sourcing ./defs, with or without sourcing ./defs-static
beforehand, and that this override is honored. Update heading
comments.
tests: `lib/' shell scripts transparently tested also with $SHELL
With the previous commit, the user could prefer the use of $SHELL
over /bin/sh in some tests checking the Automake-provided shell
scripts by manually exporting `test_prefer_config_shell' to "yes"
in the environment. With this commit, we ensure that such tests
*always* and *transparently* run using both $SHELL and /bin/sh
to execute the checked scripts. The `test_prefer_config_shell'
variable becomes an internal detail, and is no more meant to be
manually defined or overridden.
* tests/defs-static.in: Check that `test_prefer_config_shell' is
not exported in the environment. Error out if this is the case.
* tests/config-shell-tests.sh: New file, driver script to run
checks on the shell scripts in `lib/' using the $SHELL determined
at configure time instead of the default system shell /bin/sh.
* Makefile.am (TESTS_EXTENSIONS): Add `.shtst'.
(SHTST_LOG_COMPILER): Define, it calls `config-shell-tests.sh'.
(config_shell_tests): Define to a list of tests that wraps other
`*.test' tests using `config-shell-tests.sh'.
($(config_shell_tests)): Dummy dependency declaration required
in order to have make actually produce expected log files from
the `.shtst.log' suffix rule.
(EXTRA_DIST): Distribute `config-shell-tests.sh'.
(TESTS): Add `$(config_shell_tests)'.
* tests/self-check-env-sanitize.test: Update, by checking that
`test_prefer_config_shell' isn't exported in the environment.
tests: can use also $SHELL to check shell scripts from `lib/'
* tests/ar-lib.test: If the variable `$test_prefer_config_shell'
is set to "yes", run the script under test with configure-time
determined $SHELL, rather than with /bin/sh.
The `$test_prefer_config_shell' variable defaults to empty, but
can be overridden at runtime by the user, thus allowing more
coverage.
* tests/compile.test: Likewise.
* tests/compile2.test: Likewise.
* tests/compile3.test: Likewise.
* tests/compile4.test: Likewise.
* tests/compile5.test: Likewise.
* tests/compile6.test: Likewise.
* tests/instsh2.test: Likewise.
* tests/instsh3.test: Likewise.
* tests/mkinst3.test: Likewise.
* tests/missing.test: Likewise.
* tests/missing2.test: Likewise.
* tests/missing3.test: Likewise.
* tests/missing5.test: Likewise.
* tests/defs (get_shell_script): New subroutine, factoring out
code common to the tests above.
(xsi-lib-shell): If `$test_prefer_config_shell' is set to "yes",
check that $SHELL, not /bin/sh, supports XSI constructs, as we
expect the test will use $SHELL and not /bin/sh to run the
script being tested.
This change avoids potential spurious failures with tests using
the requirement 'xsi-shell' to mean that they want */bin/sh* (not
$SHELL) to be XSI-conforming. This idiom used to work before
commit `v1.11-874-g1321be7' (as back then the test scripts were
unconditionally run with /bin/sh), but has become inconsistent
now that the test scripts re-execute themselves with configure
determined $SHELL.
The described spurious failures have already occurred in practice,
for examples on Solaris systems which also had GNU Bash installed.
From a suggestion by Peter Rosin. See discussion at:
<http://lists.gnu.org/archive/html/automake-patches/2011-06/msg00016.html>
* tests/defs (xsi-shell): Now check that $SHELL, rather than the
shell currently running the test script, is an XSI shell.
(xsi-bin-sh): New requirement, checking that /bin/sh (which can
differ from $SHELL) is an XSI shell.
(xsi-lib-shell): New requirement, checking that the shell that
should be used to test the Automake-provided scripts from `lib/'
is an XSI shell. For the moment, this is just an alias for
`xsi-bin-sh'.
(require_xsi): New subroutine, used to factor out code common to
the requirements above.
($xsi_shell_code): New variable, contains shell code supposed to
work only with XSI shells. Used by the new subroutine above.
* tests/ar-lib.test ($required): Require 'xsi-lib-shell' instead
of 'xsi-shell', since the script we test here is run with /bin/sh,
not with $SHELL.
* tests/compile3.test: Likewise.
* tests/compile6.test: Likewise.
* tests/auxdir2.test (configure.in): Close m4 quoting in the
argument to AC_CONFIG_AUX_DIR. Without this, aclocal fails with
"ERROR: end of file in string". This problem hasn't been exposed
by the testsuite before because this test is in XFAIL_TESTS, so
its failure went unnoticed, even if it was due to a wrong cause.
Our ad-hoc usage of `tests/defs' in the testsuite's self tests
stopped working properly when we made the test scripts re-execute
themselves with the configure-time $SHELL. Fix this.
* tests/self-check-exit.test: Export `AM_TESTS_REEXEC' to "no"
before running the self tests. This fixes a spurious failure
present only when the test was run by hand.
tests: use `$SHELL' to run the shell scripts from `lib/'
This should offer greater testsuite coverage for those developers
that override CONFIG_SHELL at configure time in order to test more
shells on a single system, instead of just the default `/bin/sh'.
This change also fixes few spurious failures in tests using the
`xsi-shell' requirement, where inconsistencies could crop up if
the shell probed for XSI features (which, by default, is $SHELL)
was not the same shell later used to run the scripts using those
features (which was hard-coded to `/bin/sh'). Such failures have
already occurred in practice, for examples on Solaris systems
which had also GNU Bash installed.
* tests/ar-lib.test: Run the `ar-lib' script with `$SHELL', rather
than directly with `./ar-lib', which would make run unconditionally
with `/bin/sh'.
* tests/compile.test: Likewise, but for the `compile' script.
* tests/compile2.test: Likewise.
* tests/compile3.test: Likewise.
* tests/compile4.test: Likewise.
* tests/compile5.test: Likewise.
* tests/compile6.test: Likewise.
* tests/instsh2.test: Likewise, but for the `install' script.
* tests/instsh3.test: Likewise.
* tests/mkinst3.test: Likewise, but for the `mkinstalldirs' script.
* tests/missing.test: Likewise, but for the `missing' script.
* tests/missing2.test: Likewise.
* tests/missing3.test: Likewise.
* tests/missing5.test: Likewise.
silent-rules tests: fix spurious failures with Sun Studio C++
* tests/silentcxx.test: The C++ compiler from Sun Studio is named
`CC'. Account for this in our grepping checks on the make output.
Since we are at it, throw in a couple of improvements to comments
and formatting.
* tests/silent-many-generic.test: The C++ compiler from Sun Studio
is named `CC', and this can cause spurious failures in our grepping
of the make output. Work around this by using a wrapper script
around the C++ compiler (generated on the fly), since filtering the
make output proved to be too fragile.
tests: fix spurious failure in backcompat2.test on NetBSD
* tests/backcompat2.test: Add trailing `:' in the body of a `for'
loop, in case the last command there might have an exit status
different 0. This work around `set -e' issues in some BSD shells,
e.g., NetBSD /bin/ksh.
* tests/autohder3.test (Makefile.am): Let `test' depend on `all',
so that config.h header is truly remade.
Remove now useless call to `$MAKE' when non-GNU make is in use.
* tests/cond29.test: To please the `sc_tests_Exit_not_exit'
maintainer check, avoid using `sh -c "exit 0"' where a simple
`sh -c :' will do.
* tests/depmod-data.test: Use creative quoting to avoid
spuriously triggering the `sc_tests_Exit_not_exit' maintainer
check.
* tests/instdir-ltlib.test: Use creative quoting to avoid
spuriously triggering the `sc_rm_minus_f' maintainer check.
* tests/instdir-prog.test: Likewise.
* tests/instspc-data.test: Use creative quoting to avoid
spuriously triggering the `sc_tests_Exit_not_exit' maintainer
check.
* Makefile.am (sc_diff_automake_in_automake): Update, as we
now expect 9 lines, not 8, to be changed from `automake.in'
to `automake'.
(sc_diff_aclocal_in_aclocal): New maintainer check, similar to
the above, and checking that only 10 lines are changed from
`aclocal.in' to `aclocal'.
(syntax_check_rules): Update.
(sc_tests_Exit_not_exit): Exempt self tests `self-check-*.test'
from this check, as they can legitimately use the bare `exit'
builtin in various places.
* doc/automake.texi (Python): Remove stray `@' from the end of
a line. Typo introduced in commit `v1.11-312-g5bf7af6'.
* tests/depcomp8a.test: Pass DISTCHECK_CONFIGURE_FLAGS to make
from the environment rather than from the command line, to
pacify the `sc_tests_overriding_macros_on_cmdline' maintainer
check.
* tests/depcomp8b.test: Likewise.
tests: don't require GNU make where it's not strictly needed
* tests/autohdr3.test: Rewrite to be stricter when make is GNU
make. Drop the requirement of GNU make.
* tests/aclocal5.test: Drop GNU make requirement, it's not truly
needed. Add reference to similar tests `remake-subdir*.test'.
* remake-subdir-gnu.test, remake-subdir-from-subdir.test,
remake-subdir.test, remake-subdir2.test: Add reference to
each other, and to related test `aclocal5.test'.
* tests/aclocal6.test: Drop GNU make requirement, it's not
truly needed.
* tests/confh6.test: Likewise.
* tests/lex3.test: Likewise.
* tests/remake11.test: Likewise.
* tests/subdir5.test: Likewise.
* tests/subdir8.test: Likewise.
* tests/werror2.test: Likewise.
* tests/conff.test: Likewise, and ensure verbose printing of
captured make output.
* tests/lex5.test: Tweak so that GNU make is no more required.
* tests/version7.test: Likewise.
* tests/maken2.test: Add explicative comment for why this test
required GNU make.
* tests/maken4.test: Let it run also with BSD makes supporting
the `.MAKE' special target.
* tests/output6.test: Use proper m4 quoting in configure.in.
Expand make macros with one-character name using `$(x)', not
`$x', for portability. Move checks in the makefiles, rather
than relying on grepping the output from make. Drop the now
unneeded GNU make requirement.
lex tests: do not force the use of flex unconditionally
* tests/defs (lex): Act more similarly to what the `yacc'
requirement does, i.e., only force the use of flex if the
$LEX variable is left unset by the user.
(flex): Use `skip_' to skip the test if flex is not found.
* tests/lex3.test (foo.l:yywrap): Return 1, not 0, to avoid hangs.
Bug introduced in commit 'v1.11-871-geb147a1'.
(Makefile.am): Do not add `@LEXLIB@' to `$(LDADD)', as we define
our own `yywrap' function.
* tests/lex.test (tscan.l): In `yywrap', return 1, not 0, for
consistency with the default flex implementation.
* tests/lex-libobj.test (yywrap.c): Likewise.
* tests/lex-subobj-nodep.test (s1.l): Likewise.
* tests/lexvpath.test (foo.c): Likewise.
* tests/silent-lex-gcc (foo.l): Likewise.
* tests/silent-lex-generic (foo.l): Likewise.
* tests/silent-many-gcc (foo5.l): Likewise.
* tests/silent-many-generic (foo5.l): Likewise.
* tests/lex-lib.test (mu.c): Likewise.
Update heading comments, to refer to ...
* tests/lex-lib-external.test: ... this new test, which checks
that we can get use the `yywrap' function from a system-wide
library, if that's available.
* tests/self-check-cleanup.test: When the test must be skipped,
use `skip_ REASON' instead of `echo REASON; Exit 77'. Also,
make the skip message shorter and clearer.
Our ad-hoc usage of `tests/defs' in the testsuite's self tests
stopped working properly when we made the test scripts re-execute
themselves with the configure-time $SHELL. Fix this.
* tests/defs: Only check that we can find the client test script
when we must re-execute it.
* tests/self-check-cleanup.test: Export `AM_TESTS_REEXEC' to "no"
before running the self tests.
* tests/self-check-dir.test: Likewise.
* tests/self-check-explicit-skips.test: Likewise.
* tests/self-check-me.test: Likewise.
* tests/self-check-sanity.test: Likewise.
* tests/self-check-reexec.test: New test.
* tests/Makefile.am (TESTS): Update.
tests: prefer ulimit over timeout in test on a memory-hogging bug
* tests/cond29.test: Use 'ulimit' instead of 'timeout' to ensure
that automake does not uses up too much resources. This is really
and improvement because the bug tested by this script wasn't just
a "it hangs" or "it runs too slow" bug, but rather a memory-hogging
bug (due to combinatorial explosion when many Automake conditionals
had to be handled) which could easily crash the whole system, which
is unacceptable. The requirement of a proper and working 'ulimit'
builtin might cause the test to be skipped on more systems, but
that shouldn't be a problem since the bug isn't about a portability
issue, but is rather an automake internal implementation problem.
I've verified that the test as updated by this patch still passes
with automake 1.8.5, automake 1.10.2, and obviously the development
version of automake, and that it fails with automake 1.7.9.
testsuite: avoid generating `*-p.test' tests, use a wrapper script
The generated `*-p.test' tests had already become just thin layers
around the corresponding test scripts. This change makes the final
step, converting to the use of a generic wrapper script and thus
avoiding the extra test generation (similarly to what is done for
the `*.instspc' and `*.depmod' tests).
* tests/parallel-tests.sh: New file, driver script to run checks
the on the `parallel-tests' semantics by wrapping tests that use
the generic "Simple Tests" driver.
* tests/gen-parallel-tests: Update, mostly to reflect the new
`.ptest' extensions used for tests in $(parallel_tests).
* Makefile.am (TESTS_EXTENSIONS): Add `.ptest'.
(PTEST_LOG_COMPILER): Define, it calls `parallel-tests.sh'.
($(parallel_tests)): Do not really generate `*-p.test' tests
anymore; this is now just a dummy dependency declaration required
in order to have make actually produce expected log files from
the `.ptest.log' suffix rule.
(EXTRA_DIST): Distribute `parallel-tests.sh'.
(MAINTAINERCLEANFILES): Don't remove the `$(parallel_tests)', it
is not necessary anymore.
(generated_tests): Variable definition removed.
(TESTS): Update, by listing `$(parallel_tests)' directly instead
of `$(generated_tests)'
(expected_list_of_tests): Remove `$(generated_tests)'.
(maintainer-check-list-of-tests): No need to explicitly depend on
`$(expected_list_of_tests)' anymore.
* master:
automake, aclocal: honour configure-time AUTOCONF and AUTOM4TE
build: the user can override AUTOM4TE, AUTORECONF and AUTOUPDATE too
tests/README: fix example about `make -e' usage
* maint:
automake, aclocal: honour configure-time AUTOCONF and AUTOM4TE
build: the user can override AUTOM4TE, AUTORECONF and AUTOUPDATE too
tests/README: fix example about `make -e' usage
automake, aclocal: honour configure-time AUTOCONF and AUTOM4TE
Currently, the Automake's own configure script allow definition
of AUTOCONF and AUTOM4TE, expected to point respectively to an
autoconf and autom4te programs. But while these definitions are
honoured in the Automake's build systems and test suite, they
were *not* honoured in the generated `automake' and `aclocal'
scripts. This behaviour, apart from being wrong in that it does
not allow the user enough freedom in choosing his tools, also
caused inconsistencies in the test suite, brining to spurious
failures.
Problem reported by Graham Reitz on the automake list; see thread:
<http://lists.gnu.org/archive/html/automake/2011-05/msg00022.html>
* automake.in ($traces): Use `@am_AUTOCONF', not simply `autoconf'.
* aclocal.in ($traces): Use `@am_AUTOM4TE', not simply `autom4te'.
* Makefile.am (do_subst): Substitute also `@am_AUTOCONF' and
`@am_AUTOM4TE'.
* NEWS: Update.
* THANKS: Update.
build: the user can override AUTOM4TE, AUTORECONF and AUTOUPDATE too
Our build system allows the user to override AUTOCONF and AUTOHEADER
at configure time, and honours these overrides in our testsuite.
But it didn't do the same with AUTOM4TE, AUTORECONF and AUTOUPDATE.
This change fixes that inconsistency.
* configure.ac (am_AUTOM4TE, am_AUTOUPDATE, am_AUTORECONF): New
AC_SUBSTitutions. Update comments.
* tests/defs.in ($AUTOUPDATE): Default to `@am_AUTOUPDATE@' now.
($AUTOM4TE): New variable, defaulting to `@am_AUTOM4TE@'.
($AUTORECONF): New variable, defaulting to `@am_AUTORECONF@'.
* doc/Makefile.am ($(srcdir)/amhello-1.0.tar.gz): Update.
remake: behave better with non-GNU make in subdirectories
Currently, with every decent make program, it is possible to
rebuild out-of-date autotools-generated files with a simple
"make Makefile" -- but for this to work reliably with non-GNU
make implementations, the command must be issued from the
top-level directory. This patch removes such limitation.
* lib/am/configure.am (am--refresh): Depend on `%MAKEFILE%'.
* tests/defs.in (using_gmake): New function, backported from the
`master' branch (and simplified).
* tests/remake-subdir.test: New test.
* tests/remake-subdir2.test: Likewise.
* tests/remake-subdir-gnu.test: Likewise.
* tests/remake-subdir-from-subdir.test: Likewise.
* tests/Makefile.am (TESTS): Update.
tests: don't require gfortran if any fortran compiler is enough
* tests/silentf90.test ($required): Require `fortran', not
`gfortran'.
* tests/silentf77.test ($required): Require `fortran77', not
`gfortran'.
* tests/silent-many-generic.test ($required): Require `fortran'
and `fortran77' rather than `gfortran'.
tests: improve `ccnoco*.test', better cross-compiling support
* tests/ccnoco3.test (Mycomp): Use the `$CC' chosen by `tests/defs'
instead of forcing `gcc' unconditionally. This ensures better
coverage in case of cross-compiling, when GCC can be named e.g.,
`i586-mingw32msvc-gcc', instead of simply `gcc'.
* tests/ccnoco.test: Likewise. Remove redundant checks. Modernize
the created `configure.in'. Run tests both in-tree and in VPATH.
Export `CC' to the overridden value only once.
* tests/ccnoco2.test: Slightly stricter grepping of automake
stderr. Add trailing `:' command.
testsuite: use $SHELL to run tests which are shell scripts
* tests/Makefile.am (TEST_LOG_COMPILER): Define so that the
configure-time $SHELL is used to run the tests.
* tests/defs: Add code to re-execute by default the running
test script with configure-time $SHELL. Updated comments.
* configure.ac: Check that `set -e' is working for $SHELL,
not for /bin/sh.
* tests/defs-static.in: Update comments.
* tests/README (Supported shells): Updated.
(Getting details from failures): Don't tell that tests are
run by /bin/sh by default.
tests: split 'subst2.test' to improve modularity and coverage
* tests/subst2.test: Test removed, split into ...
* tests/programs-primary-rewritten.test: ... this test ...
* tests/subst-no-trailing-empty-line.test: ... and this one ...
* tests/extra-programs-empty.test: ... and this one.
* tests/Makefile.am (TESTS): Update.
tests: tweak and improve tests on Automake conditionals
The "avoid the requirement of a working compiler" we refer about
below is obtained by disabling automatic dependency tracking and
defining `CC' (and `EXEEXT', `OBJEXT', `CXX', etc., if needed) to
dummy values, either directly in the `Makefile.am', or by AC_SUBST
in `configure.in'.
The "cosmetic changes" we refer about below consists in, e.g.,
adding a trailing `:' command to a script, using proper m4 quoting
in `configure.in' files, adding commands that offer more debugging
output, explicitly declaring phony targets as such in Makefiles,
making use of idioms more consistent with those employed in other
tests, following the GNU formatting standards more closely, etc.
* tests/cond.test: Cosmetic changes.
* tests/cond3.test: Likewise.
* tests/cond10.test: Likewise.
* tests/cond14.test: Likewise.
* tests/cond15.test: Likewise.
* tests/cond17.test: Likewise.
* tests/cond40.test: Likewise.
* tests/cond13.test: Likewise, and make grepping of the generated
`Makefile.in' slightly stricter.
* tests/cond6.test: Extend by also running ./configure, make and
"make install". Few cosmetic changes.
* tests/cond8.test: Likewise.
* tests/cond2.test: Do few cosmetic changes. Make grepping of
automake stderr stricter.
* tests/cond20.test: Likewise.
* tests/cond23.test: Likewise.
* tests/cond24.test: Likewise.
* tests/cond42.test: Likewise.
* tests/cond46.test: Likewise.
* tests/cond9.test: Move more checks in the `Makefile.am' instead
of grepping make's output.
* tests/cond38.test: Likewise.
* tests/cond11.test: Likewise. Avoid the requirement of a working
C compiler.
* tests/cond16.test: Likewise.
* tests/cond22.test: Likewise.
* tests/cond30.test: Likewise.
* tests/cond31.test: Likewise.
* tests/cond4.test: Likewise, and drop the now-useless GNU make
requirement as well.
* tests/cond18.test: Likewise.
* tests/cond19.test: Likewise.
* tests/cond22.test: Likewise.
* tests/cond25.test: Add trailing `:' command.
* tests/cond26.test: Likewise.
* tests/cond27.test: Likewise.
* tests/cond28.test: Likewise.
* tests/cond29.test: Use `unindent' function for better formatting.
Other minor cosmetic changes. Use a `timeout' program (if it's
available) to determine whether the script takes too long, instead
of just hoping that the user will notice an abnormally long test
execution time.
* tests/cond33.test: Extend a bit. Fix heading comments. Few more
cosmetic changes.
* tests/cond37.test: Ensure verbose printing of captured make
output. Minor cosmetic changes.
* tests/cond34.test: Likewise. Avoid the requirement of a working
C compiler. Make grepping of make output slightly stricter.
* tests/cond35.test: Quote literal dots in grep regexp. Add extra
debugging output. Minor cosmetic changes.
* tests/cond36.test: Likewise.
* tests/cond41.test: Do not simply check that aclocal fails, but
also grep its stderr for the expected error message.
* tests/cond43.test: Likewise (but the program being automake).
Few cosmetic changes.
* tests/condd.test: Avoid the requirement of a working C compiler.
* tests/condman3.test: Extend by using more man pages and more
manpage sections.
* tests/condman.test: Removed, it's completely superseded by
`condman3.test'.
* tests/Makefile.am (TESTS): Update.
lex tests: avoid spurious failures when LEXLIB isn't found
The AC_PROG_LEX Autoconf macro does not diagnose a failure to find
the "lex library" expected to provide a `yywrap' function (function
which is required to link most lex-generated programs). On the
contrary, when all the link attempts (i.e., with `-ll' and `-lfl')
fail, configure declares that no lex library is needed, and simply
proceeds with the configuration process -- only for the build to
possibly fail later, at make time.
This behaviour might be (partly) intended; the Autoconf manual
reads:
``You are encouraged to use Flex in your sources, since it is
both more pleasant to use than plain Lex and the C source
it produces is portable. In order to ensure portability,
however, you must either provide a function `yywrap' or, if
you don't use it (e.g., your scanner has no `#include'-like
feature), simply include a `%noyywrap' statement in the
scanner's source.''
This AC_PROG_LEX behaviour is causing some spurious failures of the
Automake testsuite in environments which lack a proper library
providing `yywrap' (this happens for example in Linux->MinGW cross
compilations). But at this point is clear that a proper workaround
is to simply provide a fall-back implementation of `yywrap' in our
lexers.
* tests/cond35.test: Provide a dummy `yywrap' function.
* tests/lex3.test: Likewise.
* tests/lexvpath.test: Likewise.
* tests/silent-many-gcc.test: Likewise.
* tests/silent-many-generic.test: Likewise.
* tests/silent-lex-gcc.test: Likewise, and a dummy `main' too.
* tests/silent-lex-generic.test: Likewise.
* tests/lex-lib.test: New test.
* tests/lex-libobj.test: New test.
* tests/lex-nowrap.test: New test.
* tests/Makefile.am (TESTS): Update.
* THANKS: Update.
testsuite: require C++ compiler explicitly in tests needing it
The list of the test scripts which needed a C++ compiler but
failed to require it explicitly has been found by running:
$ tests=`grep -lE 'CXX|\.c(c|\+\+|xx|pp)' *.test | tr '\n' ' '`
$ am_explicit_skips=yes CXX=false make check TESTS="$tests"
and looking for tests that reported FAIL instead of SKIP.
After the present change, all those previously failing tests
either pass or get correctly skipped.
* tests/subobj9.test: Require `c++', instead of explicitly
skipping on configure failure. Add excerpts and/or details from
the original bug report that prompted this tests to be written.
* tests/silentcxx-gcc.test: Require g++.
* tests/silentcxx.test: Require c++.
* tests/suffix3.test: Likewise.
testsuite: require C compiler explicitly in tests needing it
The list of the test scripts which needed a C compiler but
failed to require it explicitly has been found by running:
$ am_explicit_skips=yes CC=false make check
and looking for tests that reported FAIL instead of SKIP.
After the present change, all those previously failing tests
either pass or get correctly skipped.
testsuite: allow user to ask for stricter skip semantics
Given how the Automake testsuite is currently structured, if a
command in a test script fails with status `77', the global test
outcome is considered a SKIP, because the value of `77' for `$?'
is passed to the exit trap. Indeed, this happens in practice, as
an autoconf-generated configure script can exit with status `77'
if it fails to find, e.g., a required compiler.
While this behaviour is quite useful for avoiding spurious test
failures in the wild, it can also sometimes prevent the Automake
developers to easily see and declare the requirements of their
tests.
This change introduces a new variable `am_explicit_skips', meant to
be user-overridable, and which, when set to a "true" value (i.e.,
`yes' or `1'), require a direct call to `Exit 77' in order to make
the test outcome be considered a SKIP.
* tests/defs.in ($am__test_skipped): New variable, initialized
to `no'.
(Exit): Set `$am__test_skipped' to `yes' if passed an exit status
of 77.
(trap '...' 0): When `$am_explicit_skips' is set to a "true" value,
reset an exit status of `77' to `78' if $am__test_skipped is not
set to `yes'.
* tests/self-check-exit.test: Adjust: unset `am_explicit_skips'.
* tests/self-check-explicit-skips.test: New test.
* tests/Makefile.am (TESTS): Update.
testsuite: user can force skipping of compiler-requiring tests
* tests/defs (cc, c++, fortran, fortran77): Skip the test if
the relevant compiler is disabled by having the corresponding
variable (CC, CXX, FC and F77, respectively) set to "false".
(yacc): For consistency, skip the test when the YACC variable
is set to "false", not when it's set to "no". Since we are at
it, fix the skip message to be shorter and more consistent.
tests: tweak and improve tests on "Simple Tests" driver
* tests/check.test: Make grepping of generated Makefile.in
slightly stricter. Add trailing `:' command.
* tests/check2.test: Ensure verbose printing of captured make
output. Make grepping of generated Makefile.in and of make
output stricter. Add trailing `:' command.
* tests/check3.test: Likewise. Also, fix minor error in a
comment.
* tests/check4.test: Stricter grepping of make output. Use
`using_gmake' subroutine instead of copy&paste from defs.in
to determine whether $MAKE is GNU make. Add a trailing `:'
command.
* tests/check6.test: Add trailing `:' command.
* tests/check10.test: Prefer redirection `>' over `>>' when
creating new files. Ensure verbose printing of captured make
output.
* tests/check11.test: Likewise.
* tests/check7.test: Likewise. Make grepping of make output
stricter. Prefer "make distcheck" over a simple "make check"
in a VPATH build. Add trailing `:' command.
(a.c): Format following GNU coding standards.
(Makefile.am): Explicitly declare target `print-xfail-tests'
as PHONY. Distribute $(check_SCRIPTS), for distcheck.
* tests/parallel-tests.test: Prefer redirection `>' over `>>'
when creating new files.
* tests/parallel-tests2.test: Likewise.
* tests/parallel-tests9.test: Likewise.
* tests/parallel-tests8.test: Likewise. Make grepping of
automake stderr stricter.
* tests/check8.test: Likewise. Make formatting of created
*.c files more consistent with GNU Coding Standards.
* tests/check-subst-prog.test (configure.in): Break overly
long lines.
(pass-prog.c, xfail-prog.c): Format them more consistently
with GNU Coding Standards.
* tests/parallel-tests3.test: Use a shorter and clearer skip
message. Use the `unindent' subroutine to improve readability
of indented loop bodies. Simplify the hack used to please
maintainer-check.
* tests/parallel-tests5.test: Make formatting of created *.c
files more consistent with GNU Coding Standards. Use the
`unindent' subroutine to improve readability of indented loop
bodies.
* tests/parallel-tests10.test: Add blank line, for clarity.
Prefer trailing `:' over trailing `Exit 0', for consistency
with other tests.