>From 9d9aa6d158d85c1c95aed63fd5633977f29d668f Mon Sep 17 00:00:00 2001 Message-Id: From: Stefano Lattarini 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 --- 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 . - -# 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