* tests/tap-signal.tap: Write the dummy test scripts as perl scripts, not as shell scripts, to work around unportabilities in the handling of signals. In fact, even with bash, the older script were unable to properly deliver a SIGQUIT to themselves consistently. --- ChangeLog | 9 +++++++++ tests/tap-signal.tap | 25 +++++++++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/ChangeLog b/ChangeLog index 2178b72..607c5c5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2011-09-28 Stefano Lattarini <stefano.lattar...@gmail.com> + + tests: fix spurious failures in tests on TAP + signals + * tests/tap-signal.tap: Write the dummy test scripts as perl + scripts, not as shell scripts, to work around unportabilities + in the handling of signals. In fact, even with bash, the older + script were unable to properly deliver a SIGQUIT to themselves + consistently. + 2011-09-26 Stefano Lattarini <stefano.lattar...@gmail.com> tests: fix spurious failure in test on ACLOCAL_PATH precedences diff --git a/tests/tap-signal.tap b/tests/tap-signal.tap index e27962e..9a18586 100755 --- a/tests/tap-signal.tap +++ b/tests/tap-signal.tap @@ -22,7 +22,11 @@ am_parallel_tests=yes plan_ 10 -echo TESTS = > Makefile.am +cat > Makefile.am << END +TEST_LOG_COMPILER = $PERL -w +## Will be updated later. +TESTS = +END all_signals='1 2 3 9 13 15' blocked_signals='' @@ -32,12 +36,21 @@ for sig in $all_signals; do blocked_signals="$blocked_signals $sig" continue fi + # Write the dummy test scripts in perl, not as shell scripts, to work + # around unportabilities in the handling of signals (in fact, even + # with bash, the older script were unable to properly deliver a SIGQUIT + # to themselves consistently). The shebang is dummy here, as we prefer + # to rely on the definition of TEST_LOG_COMPILER instead. unindent > signal-$sig.test <<END - #!/bin/sh - echo 1..1 - echo ok 1 - kill -$sig \$\$ - echo "Bail out! \$0 not killed?" + #! perl + # We need autoflush to avoid losing output, which could cause spurious + # "no test plan seen" in the TAP driver. + BEGIN { $| = 1 } + use warnings FATAL => "all"; + print "1..1\\n"; + print "ok 1\\n"; + kill $sig, \$\$; + print "Bail out! \$0 not killed?\\n"; END echo TESTS += signal-$sig.test >> Makefile.am done -- 1.7.2.3