tags 14601 + moreinfo severity 14601 minor stop Reference: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14601
Hi Elio, thanks for the report and sorry for the awful delay. I've fixed two of the failures you reported: * t/autohdr-subdir-pr12495.sh This failure was due to localization issues in make error messages; it has already been fixed as part of bug#15237. * t/t/tap-realtime.sh This I can reproduce when mawk is used as the awk implementation invoked by the tap-driver.sh script. Still this is a spurious failure, because when I force mawk to be used by Automake's own test suite, the driver correctly starts printing partial results from TAP tests way before the tests have completed their execution -- a failure to do so is exactly the issue this test is supposed to spot. I'm now convinced this test is too brittle, and not worth having, I've removed it with the first attached patch. For the failure of install-info-dir.sh, however, I'm a bit at a loss. For the moment, I've tweaked the tests to make it output more information that can be useful for debugging (see the second attached patch). Could you please re-run the test with these tweaks, and get back to us with the complete output? Thanks, Stefano
>From 9d9aa6d158d85c1c95aed63fd5633977f29d668f Mon Sep 17 00:00:00 2001 Message-Id: <9d9aa6d158d85c1c95aed63fd5633977f29d668f.1387825350.git.stefano.lattar...@gmail.com> From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Mon, 23 Dec 2013 19:12:09 +0100 Subject: [PATCH 1/2] tests: remove too-brittle test tap-realtime.sh * t/tap-realtime.sh: Delete. It has always been brittle, but now it's also causing spurious failures when mawk is used as the awk implementation in tap-driver.sh (see bug#14601). * t/list-of-tests.mk: Adjust. Signed-off-by: Stefano Lattarini <stefano.lattar...@gmail.com> --- t/list-of-tests.mk | 1 - t/tap-realtime.sh | 127 ----------------------------------------------------- 2 files changed, 128 deletions(-) delete mode 100644 t/tap-realtime.sh diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index 75f303a..462497e 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -1149,7 +1149,6 @@ t/tap-planskip-whitespace.sh \ t/tap-planskip-badexit.sh \ t/tap-planskip-bailout.sh \ t/tap-planskip-later-errors.sh \ -t/tap-realtime.sh \ t/tap-test-number-0.sh \ t/tap-recheck-logs.sh \ t/tap-result-comment.sh \ diff --git a/t/tap-realtime.sh b/t/tap-realtime.sh deleted file mode 100644 index e9b2b0c..0000000 --- a/t/tap-realtime.sh +++ /dev/null @@ -1,127 +0,0 @@ -#! /bin/sh -# Copyright (C) 2011-2013 Free Software Foundation, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# TAP support: -# - testsuite progress on console should happen mostly "in real time"; -# i.e., it's not acceptable for the driver to wait the end of the -# script to start displaying results from it. -# FIXME: this test uses expect(1) to ensure line buffering from make and -# children, and is pretty hacky and complex; is there a better way to -# accomplish the checks done here? - -. test-init.sh - -cat >expect-check <<'END' -eval spawn $env(SHELL) -c ":" -expect eof -END -expect -f expect-check || { - echo "$me: failed to find a working expect program" >&2 - exit 77 -} -rm -f expect-check - -# Unfortunately, some make implementations (among them, FreeBSD make, -# NetBSD make, and Solaris Distributed make), when run in parallel mode, -# serialize the output from their targets' recipes unconditionally. In -# such a situation, there's no way the partial results of a TAP test can -# be displayed until the test has terminated. And this is not something -# our TAP driver script can work around; in fact, the driver *is* sending -# out its output progressively and "in sync" with test execution -- it is -# make that is stowing such output away instead of presenting it to the -# user as soon as it gets it. -if ! using_gmake; then - case $MAKE in - *\ -j*) skip_ "doesn't work with non-GNU concurrent make";; - esac - # Prevent Sun Distributed Make from trying to run in parallel. - DMAKE_MODE=serial; export DMAKE_MODE -fi - -cat > Makefile.am << 'END' -TESTS = all.test -AM_COLOR_TESTS= no -END - -. tap-setup.sh - -cat > all.test <<'END' -#! /bin/sh -echo 1..3 - -# Creative quoting to placate maintainer-check. -sleep="sleep "3 - -# The awk+shell implementation of the TAP driver must "read ahead" of one -# line in order to catch the exit status of the test script it runs. So -# be sure to echo one "dummy" line after each result line in order not to -# cause false positives. - -echo ok 1 - foo -echo DUMMY -$sleep -test -f ok-1 || { echo 'Bail out!'; exit 1; } - -echo ok 2 - bar -echo DUMMY -$sleep -test -f ok-2 || { echo 'Bail out!'; exit 1; } - -echo ok 3 - baz -echo DUMMY -$sleep -test -f ok-3 || { echo 'Bail out!'; exit 1; } - -: > all-is-well -END - -chmod a+x all.test - -cat > expect-make <<'END' -eval spawn $env(MAKE) check -expect { - "PASS: all.test 1 - foo" { - open "ok-1" "w" - exp_continue - } - "PASS: all.test 2 - bar" { - open "ok-2" "w" - exp_continue - } - "PASS: all.test 3 - baz" { - open "ok-3" "w" - exp_continue - } - "Testsuite summary" { - exit 0 - } - timeout { - puts "expect timed out" - exit 1 - } - default { - puts "expect error" - exit 1 - } -} -END - -# Expect should simulate a tty as stdout, which should ensure a -# line-buffered output. -MAKE=$MAKE expect -f expect-make -test -f all-is-well - -: -- 1.8.5.rc0.23.gaa27064
>From 20bcc91242f89bc7c14385209be19a9336bf7471 Mon Sep 17 00:00:00 2001 Message-Id: <20bcc91242f89bc7c14385209be19a9336bf7471.1387825350.git.stefano.lattar...@gmail.com> In-Reply-To: <9d9aa6d158d85c1c95aed63fd5633977f29d668f.1387825350.git.stefano.lattar...@gmail.com> References: <9d9aa6d158d85c1c95aed63fd5633977f29d668f.1387825350.git.stefano.lattar...@gmail.com> From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Mon, 23 Dec 2013 19:56:55 +0100 Subject: [PATCH 2/2] tests: make install-info-dir.sh print more debugging info With the hope that this will shed more light on bug#14601 Signed-off-by: Stefano Lattarini <stefano.lattar...@gmail.com> --- t/install-info-dir.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/t/install-info-dir.sh b/t/install-info-dir.sh index b16824f..46a70b9 100644 --- a/t/install-info-dir.sh +++ b/t/install-info-dir.sh @@ -87,18 +87,19 @@ if test $have_installinfo = yes; then $MAKE install-info test -f $instdir/info/foo.info - test -f $instdir/info/dir + cat $instdir/info/dir $FGREP 'Does nothing at all, but has a nice name' $instdir/info/dir $MAKE uninstall test ! -e $instdir/info/foo.info + cat $instdir/info/dir $FGREP 'but has a nice name' $instdir/info/dir && exit 1 dir="$destdir/$cwd/$instdir/info" $MAKE DESTDIR="$cwd/$destdir" install-info test -f "$dir"/foo.info - test -f "$dir"/dir + cat "$dir"/dir $FGREP 'Does nothing at all, but has a nice name' "$dir"/dir $MAKE DESTDIR="$cwd/$destdir" uninstall test ! -e "$dir"/foo.info @@ -141,10 +142,10 @@ if test $have_installinfo = yes; then END $MAKE install-info test -f $instdir/info/foo.info - test -f $instdir/info/dir + cat $instdir/info/dir $MAKE uninstall test ! -e $instdir/info/foo.info - test -f $instdir/info/dir + cat $instdir/info/dir $FGREP 'but has a nice name' $instdir/info/dir && exit 1 : For shells with busted 'set -e'. fi @@ -169,6 +170,7 @@ fi chmod a-w $instdir/info/dir for val in no NO n; do env AM_UPDATE_INFO_DIR="$val" $MAKE uninstall + cat $instdir/info/dir $FGREP 'Does nothing at all, but has a nice name' $instdir/info/dir done @@ -177,7 +179,7 @@ if test $have_installinfo = yes; then rm -rf $instdir env AM_UPDATE_INFO_DIR="$val" $MAKE install-info test -f $instdir/info/foo.info - test -f $instdir/info/dir + cat $instdir/info/dir env AM_UPDATE_INFO_DIR="$val" $MAKE uninstall test ! -e $instdir/info/foo.info $FGREP 'but has a nice name' $instdir/info/dir && exit 1 -- 1.8.5.rc0.23.gaa27064