platform/upstream/automake.git
11 years agomaintcheck: fixup list of files in $(xdefs)
Stefano Lattarini [Thu, 26 Jul 2012 12:16:42 +0000 (14:16 +0200)]
maintcheck: fixup list of files in $(xdefs)

syntax-checks.mk (xdefs): Adjust to recent changes: add 't/ax/test-lib.sh'
and 't/ax/test-lib.sh', remove the now-deleted 't/ax/test-init.sh'

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: never source test-defs.sh directly, source test-lib.sh instead
Stefano Lattarini [Thu, 26 Jul 2012 10:50:32 +0000 (12:50 +0200)]
tests: never source test-defs.sh directly, source test-lib.sh instead

After the recent re-organization, sourcing 'test-defs.sh' directly might
not work well and cause spurious failures or other unexpected behaviours.
We should source 'test-lib.sh' instead, which contains not more direct
code execution (only definition of shell variables/functions, or sourcing
of other '*.sh' with the same property), is protected against multiple
inclusions, and sources 'test-defs.sh' automatically in in a proper way.

* t/testsuite-summary-count.sh, t/tap-summary.sh, t/tap-summary-color.sh,
t/testsuite-summary-color.sh: Source 'test-lib.sh', not 'test-defs.sh'.
* gen-testsuite-part: Likewise, in the generated wrapper scripts.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoruntest: sanitize test environment
Stefano Lattarini [Thu, 26 Jul 2012 09:04:31 +0000 (11:04 +0200)]
runtest: sanitize test environment

* runtest.in: Here, similarly to what is done by AM_TESTS_ENVIRONMENT
in Makefile.am, unset variables that should be under the complete control
of the test framework, and that could create havoc if inherited from the
environment.  This remove the need to check against possible environment
"pollution" ...
* t/ax/test-defs.in: ... in here.
* Makefile.am (AM_TESTS_ENVIRONMENT): Add a comment about the need of
synchronization with 'runtest.in'.
* t/self-check-env-sanitize.tap: Remove as obsolete.
* t/list-of-tests.mk: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: remove an obsolescent self test
Stefano Lattarini [Thu, 26 Jul 2012 08:45:43 +0000 (10:45 +0200)]
tests: remove an obsolescent self test

* t/self-check-tap.sh: This.  The recent reorganization and code
moving between 'test-defs.sh' and 'test-lib.sh' has made it
brittle and prone to failures.  Since the usefulness of this self
check is extremely limited, it's not worth trying to fix it. Just
remove it.
* t/list-of-tests.mk: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: "am_using_tap=yes" -> "am_test_protocol=tap"
Stefano Lattarini [Thu, 26 Jul 2012 08:35:09 +0000 (10:35 +0200)]
tests: "am_using_tap=yes" -> "am_test_protocol=tap"

And similarly, "am_using_tap=no" -> "am_test_protocol=none".

The new '$am_test_protocol' name is clearer, and will allow the easy
addition of further test protocols in the future.  This is not truly
relevant for automake, but we are trying to make some parts of our
testsuite framework as general as possible, in view of a future move
to a more generic project like Gnulib.

* Makefile.am, t/ax/am-test-lib.sh, t/ax/test-defs.in, t/ax/test-lib.sh,
t/self-check-env-sanitize.tap, t/self-check-tap.sh: Adjust.
* syntax-checks.mk (sc_tests_obsolete_variables): Add 'am_using_tap' to
the list of obsolete variables to check against.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: protect test libs against multiple inclusion
Stefano Lattarini [Thu, 26 Jul 2012 10:21:40 +0000 (12:21 +0200)]
tests: protect test libs against multiple inclusion

* t/ax/test-lib.sh, t/ax/am-test-lib.sh: Return early if already sourced.
Use the witness variables '$test_lib_sourced' and '$am_test_lib_sourced',
respectively, for this purpose.
* runtest.in, Makefile.am (AM_TESTS_ENVIRONMENT): Unset 'test_lib_sourced'
and 'am_test_lib_sourced', to avoid interferences from the environment.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoconfigure: testsuite shell can return early from "dot-sourced" files
Stefano Lattarini [Wed, 25 Jul 2012 18:40:21 +0000 (20:40 +0200)]
configure: testsuite shell can return early from "dot-sourced" files

* configure.ac: Check that the shell selected to run the test
scripts can call 'return' form within a file being sourced
with the '.' built-in.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: move sanitization and "Bournification" in the generic test lib
Stefano Lattarini [Thu, 26 Jul 2012 08:22:52 +0000 (10:22 +0200)]
tests: move sanitization and "Bournification" in the generic test lib

* t/ax/test-defs.sh: From here ...
* t/ax/test-lib.sh: ... to here.  Also move the initialization of
'$argv0' and '$me'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: source test defs in the generic test lib
Stefano Lattarini [Thu, 26 Jul 2012 08:09:04 +0000 (10:09 +0200)]
tests: source test defs in the generic test lib

* t/ax/test-lib.sh: That is, here ...
* defs: ... rather than here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest defs: no need to re-add $srcdir/t/ax to $PATH
Stefano Lattarini [Thu, 26 Jul 2012 08:03:51 +0000 (10:03 +0200)]
test defs: no need to re-add $srcdir/t/ax to $PATH

* t/ax/test-defs.sh: Here.  That is already done by both 'runtest' and
AM_TESTS_ENVIRONMENT, and the presence of '$srcdir/t/ax' in $PATH is
anyway required, after the recent changes, for our testsuite framework
to work at all.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: split test libs into "generic" and "automake-specific"
Stefano Lattarini [Wed, 25 Jul 2012 20:49:02 +0000 (22:49 +0200)]
tests: split test libs into "generic" and "automake-specific"

This is the first step in the quest to merge the generically useful
parts of our test suite framework in a more generic project, like
Gnulib.  Time will tell if we'll succeed, and whether the success will
be worth the extra hassle.

* t/ax/test-init.sh: Split out ...
* t/ax/am-test-lib.sh, t/ax/test-lib.sh: ... into these two tests.
* defs, Makefile.am: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest setup: move actual calling of testsuite setup in ./defs
Stefano Lattarini [Wed, 25 Jul 2012 19:12:30 +0000 (21:12 +0200)]
test setup: move actual calling of testsuite setup in ./defs

* t/ax/test-init.sh: Move call to 'am_test_setup' ...
* defs: ... here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest setup: merge definitions of function for simple tests
Stefano Lattarini [Wed, 25 Jul 2012 19:04:30 +0000 (21:04 +0200)]
test setup: merge definitions of function for simple tests

* t/ax/plain-functions.sh: Delete, moving the definitions of ...
($stderr_fileno_): ... this variable ...
(warn_, fail_, skip_, skip_all_, fatal_, framework_failure_): ... and
these functions ...
* t/ax/test-init.sh: ... in here.  This allow us to use those functions
earlier in this file (instead of having to duplicate their behaviour
with inlined code).  The TAP-based tests are still able to override these
functions later to their TAP-enhanced equivalents when 'tap-functions.sh'
is sourced.
* Makefile.am (dist_noinst_DATA): Remove 't/ax/plain-functions.sh'.
* t/ax/tap-functions.sh: Adjust a comment.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest init: refactor: new function 'am_test_setup'
Stefano Lattarini [Wed, 25 Jul 2012 18:31:47 +0000 (20:31 +0200)]
test init: refactor: new function 'am_test_setup'

* t/ax/test-init.sh (am_test_setup): Here.
Call it from the main code.  Remove other calls of functions and
settings that are now duly called by 'am_test_setup'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest init: refactor: move displaying of debugging info later
Stefano Lattarini [Wed, 25 Jul 2012 18:25:55 +0000 (20:25 +0200)]
test init: refactor: move displaying of debugging info later

* t/ax/test-init.sh: Here, about the values of $PATH, $am_using_tap
and $am_running_installcheck.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest init: refactor: new function 'am_setup_testdir'
Stefano Lattarini [Wed, 25 Jul 2012 18:20:09 +0000 (20:20 +0200)]
test init: refactor: new function 'am_setup_testdir'

* t/ax/test-init.sh (am_setup_testdir): Here.
Use it instead of inlining its contents in the main code.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest init: refactor: new function 'am_set_exit_traps'
Stefano Lattarini [Wed, 25 Jul 2012 18:17:46 +0000 (20:17 +0200)]
test init: refactor: new function 'am_set_exit_traps'

* t/ax/test-init.sh (am_set_exit_traps): Here.
(trap): Use it instead of inlining the cleanup/finalization code.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoconfigure: testsuite shell set exit traps in shell functions
Stefano Lattarini [Wed, 25 Jul 2012 17:51:27 +0000 (19:51 +0200)]
configure: testsuite shell set exit traps in shell functions

* configure.ac: Check that the shell selected to run the test
scripts can set an exit trap in a shell function, without having
that trap executed at the termination of the function rather
than of the scripts.  According to the Autoconf manual, at least
AUX 5.3 /bin/sh suffers of such a bug.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest init: refactor: new function 'am_exit_trap'
Stefano Lattarini [Wed, 25 Jul 2012 17:45:31 +0000 (19:45 +0200)]
test init: refactor: new function 'am_exit_trap'

* t/ax/test-init.sh (am_exit_trap): Here.
(trap): Use it instead of inlining the cleanup/finialization code.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest init: refactor: new function 'process_requirements'
Stefano Lattarini [Wed, 25 Jul 2012 17:41:57 +0000 (19:41 +0200)]
test init: refactor: new function 'process_requirements'

* t/ax/test-init.sh (process_requirements): Here.
Use it in to check that the tools in $required are present.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest init: refactor: new function 'require_tool'
Stefano Lattarini [Wed, 25 Jul 2012 17:23:29 +0000 (19:23 +0200)]
test init: refactor: new function 'require_tool'

* t/ax/test-init.sh (require_tool): Here.
Use it in the loop in the prerequisites in $required.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest init: remove a couple of paranoid sanity checks
Stefano Lattarini [Wed, 25 Jul 2012 16:49:50 +0000 (18:49 +0200)]
test init: remove a couple of paranoid sanity checks

* t/ax/test-init.sh: Here, about 'am_top_srcdir' and 'am_top_builddir';
the values of those variables are AC_SUBST'd, so it's nigh impossible
for the to be wrong or get "messed up".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: simplify sourcing of helper shell files
Stefano Lattarini [Wed, 25 Jul 2012 22:20:03 +0000 (00:20 +0200)]
tests: simplify sourcing of helper shell files

Now that the early $PATH setup in both 'runtest' and AM_TESTS_ENVIRONMENT
allow the '.' built-in to find to-be-sourced shell scripts in the 't/ax/'
directory automatically, we can simplify several usages like:

   . "$am_testauxdir"/foo.sh

to just:

   . foo.sh

Also, because our test scripts run with the 'errexit' flag active, and
because POSIX mandates that, when the '.' built-in is used,

   ... if no readable file is found, a non-interactive shell shall abort ...

we can further simplify usages like:

    . "$am_testauxdir"/foo.sh || fatal_ "sourcing foo.sh"

once again to to just:

    . foo.sh

* ./defs, several tests: Adjusted.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest defs: move in 't/ax/test-defs.sh'
Stefano Lattarini [Wed, 25 Jul 2012 16:14:23 +0000 (18:14 +0200)]
test defs: move in 't/ax/test-defs.sh'

We can do so with minimal churn, now that the early setup of $PATH in
both 'runtest' and AM_TESTS_ENVIRONMENT allow the '.' built-in to find
to-be-sourced shell scripts in 't/ax' automatically, both in in-tree
and  VPATH builds.

With this change, we take another step forward a more rational and
"segregated" organization of our testsuite framework.

* defs-static.in: Rename ...
* t/ax/test-defs.in: ... like this, and adjust.
* Makefile.am, syntax-checks.mk, t/README, gen-testsuite-part,
t/tests-init.sh, t/ax/tap-setup.sh, t/tap-summary.sh, .gitignore,
t/testsuite-summary-color.sh, t/testsuite-summary-count.sh,
t/self-check-tap.sh, defs: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: update PATH early from AM_TESTS_ENVIRONMENT and runtest
Stefano Lattarini [Wed, 25 Jul 2012 21:06:06 +0000 (23:06 +0200)]
tests: update PATH early from AM_TESTS_ENVIRONMENT and runtest

Because the POSIX standards mandate that sourcing a file with ". FILE"
will cause FILE (assuming it is a relative containing no slashes) to be
looked for in PATH, such a move will allow us to simplify our sourcing
of shell testing libraries like (currently) 't/ax/test-init.sh' and
'defs', and to modularize and re-organize them better in the feature,
with minimal churn.

* runtest.in, Makefile.am (AM_TEST_ENVIRONMENT): Prepend $(abs_srcdir)/t/ax
and $(abs_builddir)/t/ax (in that order) to PATH; do so avoiding repetition
in the common case of non-VPATH builds.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoruntest: export $srcdir for use by the test scripts
Stefano Lattarini [Wed, 25 Jul 2012 11:30:05 +0000 (13:30 +0200)]
runtest: export $srcdir for use by the test scripts

This is mostly a preparatory change in view of future ones.  But it
also make the behaviour of runtest more similar to that of the test
harness used by "make check".

* runtest.in: Export srcdir (was already defined to '@srcdir@').

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agogen-tests: $testdir/ax -> $testauxdir
Stefano Lattarini [Wed, 25 Jul 2012 20:06:12 +0000 (22:06 +0200)]
gen-tests: $testdir/ax -> $testauxdir

* gen-testsuite-part ($testauxdir): New, defined to "$testdir/ax".
Use it throughout, for better encapsulation and less duplication.
($auxdir): Remove as unneeded.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agogen-tests: less hard-coding of 't' as the test directory
Stefano Lattarini [Wed, 25 Jul 2012 13:55:57 +0000 (15:55 +0200)]
gen-tests: less hard-coding of 't' as the test directory

This will make life easier for us in case we decide to rename the
testsuite directory in the future (perhaps to something like 'tests',
which is somewhat less cryptic than the current 't').

* gen-testsuite-part ($testdir): New variable, used throughout instead
of hard-coding the name of the test directory to 't'.
All the script adjusted to make proper use of '$testdir'.
($auxdir): Move its definition earlier, for consistency with the one
of '$testdir'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agobuild: auxiliary testsuite files/scripts built by "make all"
Stefano Lattarini [Wed, 25 Jul 2012 14:31:17 +0000 (16:31 +0200)]
build: auxiliary testsuite files/scripts built by "make all"

This will allow the developers to run a tests case by hand out of
a newly extracted tarball simply doing:

    $ ./configure && make
    $ ./runtest t/the-test-case.sh

while before this change one has to resort to:

    $ ./configure && make && make check TESTS=
    $ ./runtest t/the-test-case.sh

or, with some non-GNU makes, even:

    $ ./configure && make && make check TESTS= AM_MAKEFLAGS="TESTS="
    $ ./runtest t/the-test-case.sh

This come very handy sometimes, especially when doing one-shot
debugging.  Admittedly not a big deal, but one less friction in
the build system is always nice.

* Makefile.am (check_SCRIPTS, dist_check_DATA, nodist_check_DATA):
Move their content to ...
(noinst_SCRIPTS, dist_noinst_DATA, nodist_noinst_DATA): ... these
variables.
Adjust comments.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoperf tests: reorganize
Stefano Lattarini [Wed, 25 Jul 2012 17:06:22 +0000 (19:06 +0200)]
perf tests: reorganize

* t/list-of-tests.mk (handwritten_TESTS): Don't list ($perf_TESTS) in
here anymore.
* Makefile.am (EXTRA_DIST): Add them explicitly.
(perf): New target, run the performance tests and save the logs of
the ones with unexpected results in the file 't/perf/test-suite.log',
which is thus ...
(PERF_TEST_SUITE_LOG): ... defined in this variable ...
(CLEANFILES): ... and added to this.
(test_subdirs): Remove 't/perf': the tests in there are no more
listed in $(TESTS).
* t/ax/test-init.sh: Don't explicitly skip "perf" test here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoruntest: pass *all* the given shell options to the test invocation
Stefano Lattarini [Thu, 26 Jul 2012 09:41:51 +0000 (11:41 +0200)]
runtest: pass *all* the given shell options to the test invocation

* runtest.in: Here.  This didn't work previously because, in our
option parsing loop, we were mistakenly redefining '$shell_opts'
each time, instead of appending to it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoruntest: correctly pass shell option also for TAP tests
Stefano Lattarini [Thu, 26 Jul 2012 09:40:53 +0000 (11:40 +0200)]
runtest: correctly pass shell option also for TAP tests

* runtest.in: Here.  This required code refactoring not
completely trivial.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocosmetics: remove leftover comment fragment from runtest.in
Stefano Lattarini [Wed, 25 Jul 2012 17:11:40 +0000 (19:11 +0200)]
cosmetics: remove leftover comment fragment from runtest.in

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest defs: improve a comment
Stefano Lattarini [Wed, 25 Jul 2012 11:16:59 +0000 (13:16 +0200)]
test defs: improve a comment

* defs-static.in: Here, about the unsetting of CDPATH.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest defs: remove obsolete comment
Stefano Lattarini [Wed, 25 Jul 2012 11:14:48 +0000 (13:14 +0200)]
test defs: remove obsolete comment

* defs-static.in: Here: do not state anymore that this file should execute
correctly with any system's /bin/sh shell, as this is not true anymore: the
testsuite assumes a POSIX shell throughout these days.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoruntest: support option --shell, tell which shell should run the test
Stefano Lattarini [Wed, 25 Jul 2012 11:03:17 +0000 (13:03 +0200)]
runtest: support option --shell, tell which shell should run the test

* runtest.in: Here.  The same effect could have been obtained by
exporting AM_TEST_RUNNER_SHELL to the desired value, but the new
API is simpler and requires less typing and less thinking.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoruntest: support passing options over to the shell
Stefano Lattarini [Wed, 25 Jul 2012 10:56:43 +0000 (12:56 +0200)]
runtest: support passing options over to the shell

* runtest.in: Here.  Also, support '--help' to display a nice
help screen.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: avoid non-textual output in a '.log' file
Stefano Lattarini [Tue, 24 Jul 2012 20:56:01 +0000 (22:56 +0200)]
tests: avoid non-textual output in a '.log' file

* t/dist-formats.tap: Here.  Otherwise, some inferior awk implementations,
like OpenIndiana /usr/xpg4/bin/awk, could be confused and cause spurious
errors in the testsuite harness.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'fix-pr11909' into maint
Stefano Lattarini [Mon, 23 Jul 2012 08:51:48 +0000 (10:51 +0200)]
Merge branch 'fix-pr11909' into maint

* fix-pr11909:
  self tests: avoid spurious failures on older bash

11 years agoself tests: avoid spurious failures on older bash
Stefano Lattarini [Sat, 14 Jul 2012 11:56:34 +0000 (13:56 +0200)]
self tests: avoid spurious failures on older bash

Fixes automake bug#11909.

* t/self-check-explicit-skips.sh: Remove or rework few checks for use
cases that are no more relevant nor supported now that we've got rid
of the need to use the 'Exit' function explicitly.  Make the other
existing checks stricter.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: remove t/parallel-tests-many.sh (fixes spurious failure)
Stefano Lattarini [Mon, 23 Jul 2012 08:37:17 +0000 (10:37 +0200)]
tests: remove t/parallel-tests-many.sh (fixes spurious failure)

That test was checking for automake#7868 "parallel-tests and command-line
length limit issue".  That bug is still open, and the tests was xfailing.

What concerns us is that the test was also causing an annoying problem.
On Solaris 10, it produced a '.log' file with two overly-long lines (more
than 1 million characters long!) and that was causing the test harness to
experience spurious failures, with Solaris XPG4 awk complaining that:

 /usr/xpg4/bin/awk: line 0 (NR=734): Record too long (LIMIT: 19999 bytes)

A little consideration shows that the bug#7868 checked by the culprit
test cannot be solved "by accident", e.g., by another bug fix or some
simple refactoring, so there is little added value in keeping the xfailing
test for it, if this causes other problems (and we've seen it does).

So we just remove the test.  In case we ever manage to fix the bug in
mainline automake, we can copy over the similar test(s) from Automake-NG,
which has actually managed to fix the bug (and have simpler test cases
for it).

* t/parallel-tests-many.sh: Delete.
* t/list-of-tests.mk (XFAIL_TESTS, handwritten_TESTS): Remove it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotypofix: in a comment in the automake script
Stefano Lattarini [Sat, 21 Jul 2012 13:47:46 +0000 (15:47 +0200)]
typofix: in a comment in the automake script

* automake.in (process_file): Here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agonews: minor fixlets and reordering
Stefano Lattarini [Tue, 17 Jul 2012 10:29:37 +0000 (12:29 +0200)]
news: minor fixlets and reordering

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agofixup: delete "# serial" line in m4/amversion.in
Stefano Lattarini [Mon, 16 Jul 2012 09:11:34 +0000 (11:11 +0200)]
fixup: delete "# serial" line in m4/amversion.in

Otherwise, when m4/amversion.m4 is regenerated, it will contain a
serial line as well.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'yacc-work' into maint
Stefano Lattarini [Mon, 16 Jul 2012 08:57:41 +0000 (10:57 +0200)]
Merge branch 'yacc-work' into maint

* yacc-work:
  news: update about recent ylwrap changes and fixes
  yacc tests: fix a spurious failure with parallel make
  ylwrap: use proper quoting inside a `...` substitution
  ylwrap: don't uselessly reset the exit status in case of failure
  ylwrap: fix C++ support for Bison
  ylwrap: refactor: move loop invariant
  ylwrap: refactoring: don't rely on the file order
  tests: upgrade and fix Bison test case
  tests: fix bison input file
  ylwrap: comment changes
  ylwrap: modernize idioms
  ylwrap: rename header inclusion in generated parsers
  ylwrap: simplify the list of renamings
  ylwrap: refactor: less duplication

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agonews: update about recent ylwrap changes and fixes
Akim Demaille [Sun, 15 Jul 2012 09:23:59 +0000 (11:23 +0200)]
news: update about recent ylwrap changes and fixes

* NEWS: In ylwrap, renamings are properly propagated, and unknown
files are preserved.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agom4: get rid of "# serial" lines
Stefano Lattarini [Sat, 14 Jul 2012 16:49:25 +0000 (18:49 +0200)]
m4: get rid of "# serial" lines

The "#serial" lines are only considered by aclocal for the system-wide
third-party '.m4' files, not for the Automake-provided ones.  So they
serve no real purpose in the Automake '.m4' files.

In addition, now that we use git and topic branches, and that we are also
writing the Automake-NG fork, the "#serial" lines are becoming more and
more unreliable (e.g., different version of the same file in different
branches can easily end up having the same serial numbers).

So let's just nuke all the "#serial" lines.  See also automake bug#11932.

* m4/*.m4: All "# serial" lines removed.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoconfigure: ${#param} must be supported by the shell for the testsuite
Stefano Lattarini [Sat, 14 Jul 2012 16:38:31 +0000 (18:38 +0200)]
configure: ${#param} must be supported by the shell for the testsuite

This will be required at least by the Automake-NG branch.

* configure.ac: Require the $AM_TEST_RUNNER_SHELL supports ${#param} as
a way to obtain the length of the expansion of the variable $param.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoyacc tests: fix a spurious failure with parallel make
Stefano Lattarini [Sat, 14 Jul 2012 10:31:19 +0000 (12:31 +0200)]
yacc tests: fix a spurious failure with parallel make

* t/yacc-bison-skeleton.sh (Makefile.am): Add 'zardoz.h'
to BUILT_SOURCES.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoylwrap: use proper quoting inside a `...` substitution
Stefano Lattarini [Sat, 14 Jul 2012 09:07:34 +0000 (11:07 +0200)]
ylwrap: use proper quoting inside a `...` substitution

* lib/ylwrap ($target): Here, when redefining this to a temporary file.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoylwrap: don't uselessly reset the exit status in case of failure
Stefano Lattarini [Sat, 14 Jul 2012 09:04:42 +0000 (11:04 +0200)]
ylwrap: don't uselessly reset the exit status in case of failure

* lib/ylwrap: Here.  In case of a failure in the wrapped yacc/lex
invocation, '$ret' (holding the final exit status of ylwrap) was
being uselessly reset to '1' in the later if/else.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoylwrap: fix C++ support for Bison
Akim Demaille [Sat, 14 Jul 2012 14:57:02 +0000 (16:57 +0200)]
ylwrap: fix C++ support for Bison

Fixes automake bug#7648.

The current logic of ylwrap is to call yacc in a sub directory, and
pull out of it all the files that were requested on its command line.
Reverse this approach: export *all* the files created in the
subdirectory, but rename them according to what the command says.
This way, extra files, such as position.hh, location.hh and stack.hh
for C++ parsers, but also parser.xml or parser.dot if XML or Dot
output is enabled, will be preserved.

* lib/ylwrap (pairlist): Remove.
(main loop): Don't loop over pairlist, but over the files in the
temporary directory.
* t/list-of-tests.mk (XFAIL_TESTS): Fixes t/yacc-bison-skeleton-cxx.sh.
* THANKS (James Bostock): Add, he reported bug#7648.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoylwrap: refactor: move loop invariant
Akim Demaille [Sat, 14 Jul 2012 08:09:15 +0000 (10:09 +0200)]
ylwrap: refactor: move loop invariant

* lib/ylwrap (input_rx): Move its definition next to its sibling's,
outside of the main loop.

11 years agoylwrap: refactoring: don't rely on the file order
Akim Demaille [Sat, 14 Jul 2012 08:08:52 +0000 (10:08 +0200)]
ylwrap: refactoring: don't rely on the file order

Forthcoming changes will make us iterate over the files in a different
order.

lib/ylwrap (first): Remove, replaced by...
(parser): this.

11 years agotests: upgrade and fix Bison test case
Akim Demaille [Sat, 14 Jul 2012 08:01:40 +0000 (10:01 +0200)]
tests: upgrade and fix Bison test case

* t/yacc-bison-skeleton-cxx.sh: Request locations, to be
even more stressful.
Use %union to make sure the %{...%} is inserted where appropriate.
Fix some indentation/coding style issues.

11 years agotests: fix bison input file
Akim Demaille [Sat, 14 Jul 2012 07:07:52 +0000 (09:07 +0200)]
tests: fix bison input file

Do not provide implementations in the %{...%} section, especially if the
header is included elsewhere, since then the linker will complain about
multiple definitions.

Reported by Stefano Lattarini,
<http://lists.gnu.org/archive/html/automake-patches/2012-07/msg00126.html>.

* t/yacc-bison-skeleton.sh (zardoz.y): Define yylex and yyerror in the
epilogue.

11 years agoylwrap: comment changes
Akim Demaille [Fri, 13 Jul 2012 11:14:44 +0000 (13:14 +0200)]
ylwrap: comment changes

* lib/ylwrap: Improve some comments.

11 years agoylwrap: modernize idioms
Akim Demaille [Fri, 13 Jul 2012 12:33:38 +0000 (14:33 +0200)]
ylwrap: modernize idioms

* lib/ylwrap: Prefer printf to echo when special characters may
occur.
Replace the historical ',' sed separator with '|'.

11 years agoylwrap: rename header inclusion in generated parsers
Akim Demaille [Fri, 13 Jul 2012 12:32:22 +0000 (14:32 +0200)]
ylwrap: rename header inclusion in generated parsers

Some types of Bison parsers, such as the GLR ones, generate a header
file that they include.  ylwrap, which renames the generated files,
does not rename the included file.  Fix this shortcoming, reported
for instance here:
<http://lists.gnu.org/archive/html/bug-bison/2012-06/msg00033.html>.
Fixes t/yacc-bison-skeleton.sh, see Automake bug#7648 and PR automake/491.

* lib/ylwrap (quote_for_sed): Accept arguments.
Catch more special characters.
(rename_sed): New.
Improve the previous renaming sed commands using quote_for_sed.
Suggested by Stefano Lattarini here:
<http://lists.gnu.org/archive/html/automake-patches/2012-07/msg00095.html>.
(main loop): Use rename_sed to rename the dependencies to other files.
* t/yacc-d-basic.sh: Exercise this case, even if bison/yacc was
not issuing such an include.
* t/list-of-tests.mk (XFAIL_TESTS): Adjust.

11 years agoylwrap: simplify the list of renamings
Akim Demaille [Thu, 12 Jul 2012 13:13:29 +0000 (15:13 +0200)]
ylwrap: simplify the list of renamings

* lib/ylwrap (pairwise): Instead of being a straightforward copy from
the command line arguments, and having to deal with y.tab vs. y_tab
later, let pairwise store the real file names to process, y_tab
conversion included when needed.
(main loop): Use $to instead of $2, for symmetry with $from.

11 years agoylwrap: refactor: less duplication
Akim Demaille [Thu, 12 Jul 2012 12:52:44 +0000 (14:52 +0200)]
ylwrap: refactor: less duplication

* lib/ylwrap (guard): New function.
Move functions before actual code.

11 years agonews: mention fixed testsuite weaknesses
Stefano Lattarini [Fri, 13 Jul 2012 12:47:54 +0000 (14:47 +0200)]
news: mention fixed testsuite weaknesses

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agonews: bump, for future 1.12.3
Stefano Lattarini [Fri, 13 Jul 2012 12:43:36 +0000 (14:43 +0200)]
news: bump, for future 1.12.3

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branches 'fix-pr11898' and 'fix-pr-11893-and-10766' into maint
Stefano Lattarini [Fri, 13 Jul 2012 11:55:58 +0000 (13:55 +0200)]
Merge branches 'fix-pr11898' and 'fix-pr-11893-and-10766' into maint

* fix-pr11898:
  tests: verify the shell test scripts are syntactically valid

* fix-pr-11893-and-10766:
  tests: don't use C instead of C++ compiler on case-insensitive platforms

11 years agotests: verify the shell test scripts are syntactically valid
Stefano Lattarini [Wed, 11 Jul 2012 08:51:15 +0000 (10:51 +0200)]
tests: verify the shell test scripts are syntactically valid

Fixes automake bug#11898.

This measure of extra safety is mostly motivated by the fact that some
shells (at least some versions of Bash in the 3.x release series, one
of which serves as /bin/sh on Mac OS X 10.7, as well as Bash 4.0 and the
/usr/xpg4/bin/sh shell from Solaris 10) erroneously exit with exit status
0 upon encountering a syntax error, if an exit trap is sett (as it is in
our test scripts).

* Makefile.am (check-tests-syntax): New, check that the shell test
scripts listed in $(TESTS) are syntactically correct.
(.PHONY, check-local): Depend on it.
* t/self-check-exit.tap : Remove checks verifying that a script exits
with non-zero status upon encountering a syntax error; as explained
above, we can't depend on that.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: don't use C instead of C++ compiler on case-insensitive platforms
Stefano Lattarini [Wed, 11 Jul 2012 12:36:13 +0000 (14:36 +0200)]
tests: don't use C instead of C++ compiler on case-insensitive platforms

This change fixes automake bug#11893 and bug#10766.

On at least Cygwin and Mac OS X 10.7, the file system where the system
compilers are located can be case-insensitive, so that looking for a
program named 'CC' might actually find the C compiler in /usr/bin/cc.

Now, the Automake configure script looks for a C++ compiler named 'CC'
before looking for more obvious names like c++ or g++ (that is done to
increase testsuite "coverage in the wild", e.g., preferring, on Solaris,
the Sun Studio C++ compiler /usr/bin/CC over the GNU C++ compiler).

Since the checks done in AC_PROG_CXX are apparently not strict enough
to rule out C compilers like those from GCC or Clang (which are smart
enough to recognize if a file has a C++ extension, passing it to the
C++ front end) the testsuite might end up using a C compiler where a
C++ one is expected, with some subtle bad consequences.

* configure.ac: Don't look for a C++ compiler named 'CC' if the
"top-level" file system(s) (where /bin and /usr/bin are) are detected
to be case-insensitive.

Reported-by: Peter Rosin <peda@lysator.liu.se>
Reported-by: Max Horn <max@quendi.de>
Helped-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: avoid spurious TAP errors on Mac OS X 10.7
Stefano Lattarini [Tue, 10 Jul 2012 13:29:57 +0000 (15:29 +0200)]
tests: avoid spurious TAP errors on Mac OS X 10.7

Fixes automake bug#1897.  Reported by Max Horn.

* t/suffix8.tap: The libtool bug#11895 was causing the ./configure script
to output a stray "ok" string on a line of its own, confusing the TAP
driver into thinking this was an extra test result (which resulted in the
next, real test results being flagged as "OUT-OF-ORDER").  Fix this by
protecting configure output.
* t/suffix10.tap: Likewise, and for the "make distcheck" output as well.
* THANKS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: fix spurious failure in aclocal7.sh on fast machines
Adam Sampson [Tue, 10 Jul 2012 13:08:15 +0000 (15:08 +0200)]
tests: fix spurious failure in aclocal7.sh on fast machines

Fixes automake bug#11896.  Issue introduced in commit v1.12.1-46-g13dd512.

* t/aclocal7.sh: Since aclocal rewrites aclocal.m4 unless the input files
are all older than the existing aclocal.m4, so we must sleep to ensure
somedefs.m4 has an older timestamp than the aclocal.m4 the next aclocal
call will generate.

Copyright-paperwork-exempt: yes
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agosync: update files from upstream with "make fetch"
Stefano Lattarini [Mon, 9 Jul 2012 16:26:56 +0000 (18:26 +0200)]
sync: update files from upstream with "make fetch"

* lib/config.guess, lib/gitlog-to-changelog, lib/texinfo.tex: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agonews: improve wording in entry about CVE-2012-3386
Stefano Lattarini [Mon, 9 Jul 2012 16:20:33 +0000 (18:20 +0200)]
news: improve wording in entry about CVE-2012-3386

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agomaint: post-release minor version bump
Stefano Lattarini [Mon, 9 Jul 2012 16:19:55 +0000 (18:19 +0200)]
maint: post-release minor version bump

* configure.ac (AC_INIT): Bump version number to 1.12.2a.
* m4/amversion.m4: Likewise (automatically regenerated by
"make bootstrap").

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agorelease: stable release 1.12.2 v1.12.2
Stefano Lattarini [Mon, 9 Jul 2012 15:26:14 +0000 (17:26 +0200)]
release: stable release 1.12.2

* configure.ac (AC_INIT): Bump version number to 1.12.2.
* m4/amversion.m4: Likewise (auto-updated by "./bootstrap").

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'distcheck-vulnerability-CVE-2012-3386' into maint
Stefano Lattarini [Mon, 9 Jul 2012 14:51:06 +0000 (16:51 +0200)]
Merge branch 'distcheck-vulnerability-CVE-2012-3386' into maint

* distcheck-vulnerability-CVE-2012-3386:
  distcheck: never make part of $(distdir) world-writable

11 years agodistcheck: never make part of $(distdir) world-writable
Stefano Lattarini [Fri, 6 Jul 2012 20:43:04 +0000 (22:43 +0200)]
distcheck: never make part of $(distdir) world-writable

This fixes a locally-exploitable security vulnerability (CVE-2012-3386).

In the 'distcheck' rule, we used to make the just-extracted (from
the distribution tarball) $(distdir) directory and all its files and
subdirectories read-only; then, in order to create the '_inst' and
'_build' subdirectories in there (used by the rest of the recipe) we
made the top-level $(distdir) *world-writable* for an instant (the
time to create those two directories) before making it read-only
again.

Making that directory world-writable (albeit only briefly) introduced a
locally exploitable race condition for those who run "make distcheck" with
a non-restrictive umask (e.g., 022) in a directory that is accessible by
others.  A successful exploit would result in arbitrary code execution
with the privileges of the user running "make distcheck" -- game over.
Jim Meyering wrote a proof-of-concept script showing that such exploit is
easily implemented.

This issue is similar to the CVE-2009-4029 vulnerability:
<http://lists.gnu.org/archive/html/automake/2009-12/msg00012.html>

* lib/am/distdir.am (distcheck): Don't make $(distdir) world-writable,
not even for an instant; make it user-writable instead, which is enough.

Helped-By: Jim Meyering <jim@meyering.net>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocompat: automake should substitute @mkdir_p@, for backward compatibility
Stefano Lattarini [Mon, 9 Jul 2012 08:33:49 +0000 (10:33 +0200)]
compat: automake should substitute @mkdir_p@, for backward compatibility

That has been unwittingly broken by commit v1.12-19-g7a1eb9f of 2012-04-28,
"AM_PROG_MKDIR_P: deprecate, to be removed in Automake 1.13". We thought it
wasn't a big deal, but Jim Meyering reported that @mkdir_p@ is used in
gettext's Makefile.in.in template:
<http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>

* lib/am/header-vars.am (mkdir_p): Don't define.
* m4/init.m4 (AM_INIT_AUTOMAKE): AC_SUBST 'mkdir_p' with $(MKDIR_P).
* t/mkdir_p.sh, t/mkdirp-deprecation.sh: Enhance.
* NEWS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agofixup: t/README: it's ./runtest, not ./t/ax/runtest
Stefano Lattarini [Sun, 8 Jul 2012 07:56:18 +0000 (09:56 +0200)]
fixup: t/README: it's ./runtest, not ./t/ax/runtest

* t/README (Supported shells): Here. And remove an extra empty line.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: move 'runtest' into the top-level directory
Stefano Lattarini [Sat, 7 Jul 2012 10:08:05 +0000 (12:08 +0200)]
tests: move 'runtest' into the top-level directory

Move our wrapper script 'runtest' (meant to allow the execution of
Automake test cases from the command line) from the 't/ax/' directory
to the top-level one.  This makes the script easier to find and to
invoke.  Much more importantly, our DejaGNU-checking test cases won't
try anymore to use that script instead of the 'runtest' program provided
by DejaGNU (that happened because '$(srcdir)/t/ax/' is automatically
added early to the $PATH variable in our test cases), which was causing
spurious SKIPs.

* t/ax/runtest.in: Move ...
* runtest.in: ... here.
* Makefile.am, t/README, .gitignore: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocosmetics: rename t/ax/test-runner => t/ax/runtest
Stefano Lattarini [Fri, 6 Jul 2012 21:42:11 +0000 (23:42 +0200)]
cosmetics: rename t/ax/test-runner => t/ax/runtest

The latter is shorter and clearer.  Better to do the rename early,
before other developers or contributors begin to get used to the
'test-runner' name.

* t/ax/test-runner.in: Rename ...
* t/ax/runtest.in: ... like this.
* Makefile.am, t/README, .gitignore: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agofixup: another "make recheck" failure with BSD make
Stefano Lattarini [Fri, 6 Jul 2012 21:22:03 +0000 (23:22 +0200)]
fixup: another "make recheck" failure with BSD make

* t/parallel-tests-log-override-recheck.sh: Here, add a proper $sleep
before calling "make recheck".  This should ideally have been done
in the earlier commit 'v1.12.1-100-g19d84bc', but it somehow slipped
through the cracks.
* t/test-metadata-recheck.sh: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotest runner: work correctly in VPATH setups
Stefano Lattarini [Fri, 6 Jul 2012 20:17:59 +0000 (22:17 +0200)]
test runner: work correctly in VPATH setups

Due to a "feature" of AC_CONFIG_FILES, because 't/ax/test-runner.in'
is in a subdirectory, the '@srcdir@' value that is AC_SUBST'd in it
gets tweaked to contain as much '..' components as are the directory
components of 't/ax/test-runner'.  Because our build system operates
in a non-recursive setup, this substitution is wrong; for example,
the final 't/ax/test-runner' build in a VPATH builds where the source
directory is ".." contains the line:

    : ${srcdir='../../../t/ax'}

instead of the expected (and correct):

    : ${srcdir='../t/ax'}

We solve the issue by building 't/ax/test-runner' with a Makefile
recipe instead of config.status substitutions; this is already done
for other testsuite-related files, like 'defs-static'.

* configure.ac (AC_CONFIG_FILES): Don't build 't/ax/test-runner'
anymore.
* Makefile.am (t/ax/test-runner): New rule.
(EXTRA_DIST): Add 't/ax/test-runner.in'.
(CLEANFILES, noinst_SCRIPTS): Add 't/ax/test-runner'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'fix-pr11806' into maint
Stefano Lattarini [Fri, 6 Jul 2012 19:29:52 +0000 (21:29 +0200)]
Merge branch 'fix-pr11806' into maint

* fix-pr11806:
  lisp: better support of VPATH builds

11 years agotests init: don't automatically re-execute tests with a POSIX shell
Stefano Lattarini [Fri, 6 Jul 2012 10:24:33 +0000 (12:24 +0200)]
tests init: don't automatically re-execute tests with a POSIX shell

I've unwittingly broken support for that feature *again* in some of
my recent testsuite tweaking.  In this case, the re-execution code
works correctly when the tests are executed with a POSIX shells, but
breaks when they are invoked by an old-style Bourne shells (e.g.,
/bin/sh on Solaris).

It's time to face it: that feature is too much brittle, and too seldom
used (because the Makefile takes care of running the tests with the
correct shell anyway, so that a breakage is only experienced when
running the tests by hand).  It just don't remain working for long, not
when we often touch the testsuite setup (which we are going to do again
when we'll try to move part of our testsuite framework to Gnulib, or a
similar project).

So, instead of trying to be extra-smart and automatically re-execute the
tests with the correct shell, we now offer a simple wrapper script that
the user can employ to run the test scripts with the proper shell.  And
while we are at it, we write this wrapper to also deal with TAP tests in
a better way, running them through the prove(1) utility, so that their
results are correctly recognized and reported.

* t/ax/test-runner.in: New file; the wrapper script we were talking about.
* configure.ac (AC_CONFIG_FILES): Process it into 't/ax/test-runner'.
* .gitignore: Add 't/ax/test-runner'.
* defs: Remove code for automatic re-execution of the scripts with the
correct shell.  This file now just a very thin layer around 'defs-static'
and 't/ax/test-init.sh'.
* t/README: Adjust, and remove or fix some imprecise or outdated text in
the process (like "... test scripts are written with portability in mind,
so that they should run with any decent Bourne-compatible shell ..." ).
* Makefile.am (AM_TESTS_ENVIRONMENT): No need to export 'AM_TESTS_REEXEC'
to "no" anymore.
* t/self-check-explicit-skips.sh: Likewise.
* t/self-check-exit.tap: Likewise.
* t/self-check-me.tap: Likewise.
* t/self-check-dir.tap: Likewise.
* t/self-check-reexec.tap: Remove as obsolete.
* t/list-of-tests.mk: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoyacc tests: fix spurious failure with parallel make
Stefano Lattarini [Fri, 6 Jul 2012 19:15:37 +0000 (21:15 +0200)]
yacc tests: fix spurious failure with parallel make

* t/yacc-deleted-headers.sh: Here, by adding a missing dependency
in the Makefile.am.  Revealed by a failure with Sun Distributed make
run on Solaris 10 in parallel mode.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: ignore minor 'recheck' regression for BSD make
Stefano Lattarini [Fri, 6 Jul 2012 12:35:04 +0000 (14:35 +0200)]
tests: ignore minor 'recheck' regression for BSD make

It turns out that, with NetBSD 5.1 make and FreeBSD 9 make, running
"make recheck" two times in a row quickly fails to correctly re-run
the failed tests in the second run.

That issue has been introduced likely introduced in commit
'v1.12.1-95-gd5443e4' of 20102-07-01, "parallel-tests: reimplement
fix for bug#11791".

Anyway, the use case that has been broken is not realistic (who is
going to run "make recheck" two times in one second, without modifying
any of the tests or the tested programs in the meantime?), so we believe
the best fix is to simply work around the issue in the affected test
cases, rather than risking to slow down or uglify the 'recheck' rule.

* t/parallel-tests9.sh: Enhance a little.
* t/tap-recheck.sh: Adjust adding proper '$sleep' calls were required.
* t/parallel-tests-log-override-recheck.sh: Likewise.
* t/test-driver-custom-multitest-recheck.sh: Likewise.
* t/test-driver-custom-multitest-recheck2.sh: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: don't clutter the top-level dir with temporary test directories
Stefano Lattarini [Fri, 6 Jul 2012 18:49:15 +0000 (20:49 +0200)]
tests: don't clutter the top-level dir with temporary test directories

* t/self-check-me.tap: Be sure to initialize '$am_create_testdir' to "no"
in all the shell invocations sourcing './defs'.  Otherwise, when running
the testsuite with 'keep_testdirs=yes', the following temporary director
are left cluttering the top-level directory:

  ./012.dir
  ./abc..dir
  ./a.b.c.dir
  ./foo.dir
  ./foo.bar.dir
  ./foo-bar-.dir
  ./_foo__bar.dir

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: avoid spurious failures when @MKDIR_P@ points to "install-sh -d"
Stefano Lattarini [Fri, 6 Jul 2012 13:16:12 +0000 (15:16 +0200)]
tests: avoid spurious failures when @MKDIR_P@ points to "install-sh -d"

* t/self-check-cleanup.tap: Several checks in this test were failing on
NetBSD 5.1.  That happened because on that system, '@MKDIR_P@' expands to
an "install-sh -d" invocation that references the $(builddir), and the
code trying to duplicate some of the Automake testsuite infrastructure
in the test subdirectory of this self test wasn't smart enough to cater
to that situation.  Granted, we could tweak the test case once more to
fix this Yet Another Spurious Failure, but at this point it has become
clear that the extra coverage offered by this test is not worth all the
hassle.  Just remove the test.  Since the testsuite is regularly run on
several systems and with different setups, most issues with the testsuite
framework will reveal themselves anyway; no actual need to unit-test them
in our testsuite, if that's too tricky.
* t/list-of-tests.mk: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocompat: automake should define $(mkdir_p), for backward compatibility
Stefano Lattarini [Fri, 6 Jul 2012 08:12:30 +0000 (10:12 +0200)]
compat: automake should define $(mkdir_p), for backward compatibility

That has been unwittingly broken by commit 'v1.12-19-g7a1eb9f'
of 2012-04-28, "AM_PROG_MKDIR_P: deprecate, to be removed in
Automake 1.13".

Report from Benoit Sigoure and Diego Elio Pattenò:
<http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>

* lib/am/header-vars.am (mkdir_p): Define as an alias for $(MKDIR_P).
* t/list-of-tests.mk (XFAIL_TESTS): Remove 't/mkdir_p.sh'.
* NEWS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocoverage: test that AM_PROG_MKDIR_P and $(mkdir_p) still works
Stefano Lattarini [Fri, 6 Jul 2012 07:59:23 +0000 (09:59 +0200)]
coverage: test that AM_PROG_MKDIR_P and $(mkdir_p) still works

They are deprecated, but should continue to work in the 1.12.x
release series.  Report from Benoit Sigoure and Diego Elio Pattenò:
<http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>

* t/mkdirp-deprecation.sh: Enhance.
* t/mkdir_p.sh: New test, check that AM_INIT_AUTOMAKE still defines
the $(mkdir_p) make variable.  Currently xfailing.
* t/list-of-tests.mk (handwritten_TESTS, XFAIL_TESTS): Add the new
test.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agolisp: better support of VPATH builds
Jack Kelly [Thu, 5 Jul 2012 16:50:37 +0000 (18:50 +0200)]
lisp: better support of VPATH builds

Fixes automake bug#11806.

* lib/am/lisp.am: Pass the value of '$(abs_srcdir)' to the
elisp-compile script in the environment.
* lib/elisp-comp: Add the vale of '$abs_srcdir' to the emacs
load-path.
* t/lisp-pr11806.sh: New test.
* t/list-of-tests.mk: Add it.

Copyright-paperwork-exempt: yes
Co-authored-by: Stefano Lattarini <stefano.lattarini@gnu.org>
Reported-by: Makoto Fujiwara <makoto@ki.nu>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agonews: fixlets and updates
Stefano Lattarini [Tue, 3 Jul 2012 08:43:31 +0000 (10:43 +0200)]
news: fixlets and updates

* NEWS: Here.  In particular, report the change in 'missing'
semantics.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: don't trust the exit status of "make -k" for non-GNU makes
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>
11 years agoparallel-tests: reimplement fix for bug#11791
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>
11 years agotests setup: unset CDPATH
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>
11 years agotests setup: more namespace safeness
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>
11 years agotests setup: remove an unused variable
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>
11 years agotests setup: less hard-coding of the test subdirectory
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>
11 years agoparallel-tests: silence an overly verbose recipe
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>
11 years agotests: fix some uses of 'Exit', where 'exit' should now be used instead
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>
11 years agomaintcheck: test scripts should be executable, check for that
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>
11 years agoMerge branch 'recheck-fix' into maint
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