]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
tests: fix spurious failures in tests on TAP + signals
authorStefano Lattarini <stefano.lattarini@gmail.com>
Wed, 28 Sep 2011 08:15:24 +0000 (10:15 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Wed, 28 Sep 2011 08:15:24 +0000 (10:15 +0200)
* 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
tests/tap-signal.tap

index 2178b72f8c3f84a1779614c10929571a5df92732..607c5c5739aa20b59cbacb75a09f14c42d1afe27 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-09-28  Stefano Lattarini  <stefano.lattarini@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.lattarini@gmail.com>
 
        tests: fix spurious failure in test on ACLOCAL_PATH precedences
index e27962eb369e41ddb3050653a9f27b11197522ed..9a1858646906ab73ef736c3374a33fec4288bd11 100755 (executable)
@@ -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