tests: avoid spurious TAP errors on Mac OS X 10.7
authorStefano Lattarini <stefano.lattarini@gmail.com>
Tue, 10 Jul 2012 13:29:57 +0000 (15:29 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Tue, 10 Jul 2012 14:06:10 +0000 (16:06 +0200)
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>
THANKS
t/suffix10.tap
t/suffix8.tap

diff --git a/THANKS b/THANKS
index 01b78c1..afdd33a 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -245,6 +245,7 @@ Matthew D. Langston             langston@SLAC.Stanford.EDU
 Matthias Andree                 matthias.andree@gmx.de
 Matthias Clasen                 clasen@mathematik.uni-freiburg.de
 Matthias Klose                  doko@ubuntu.com
+Max Horn                        max@quendi.de
 Maxim Sinev                     good@goods.ru
 Maynard Johnson                 maynardj@us.ibm.com
 Merijn de Jonge                 M.de.Jonge@cwi.nl
index a650924..7e19e04 100755 (executable)
@@ -57,11 +57,22 @@ cat > foo.x_ << 'END'
 int foo (void) { return yyparse(); }
 END
 
+# We must protect the TAP driver from the output of configure, since
+# that might output a stray "ok" on a line of its own (due to a
+# libtool bug on Mac OS X), thus causing a spurious test result to
+# be seen.  See automake bug#11897.
+run_configure ()
+{
+  st=0; ./configure >output 2>&1 || st=1
+  sed 's/^/  /' output
+  test $st -eq 0
+}
+
 command_ok_ "libtoolize" libtoolize --force
 command_ok_ "aclocal"    $ACLOCAL
 command_ok_ "autoconf"   $AUTOCONF
 command_ok_ "automake"   $AUTOMAKE --add-missing
-command_ok_ "configure"  ./configure
+command_ok_ "configure"  run_configure
 command_ok_ "make test"  $MAKE test
 
 directive=''; make_can_chain_suffix_rules || directive=TODO
index fdaf087..516c9b2 100755 (executable)
@@ -75,11 +75,22 @@ END
 echo 'int main (void) { return 0; }' > foo.x_
 echo 'int bar (void) { return 0; }' > bar.x_
 
+# We must protect the TAP driver from the output of configure, since
+# that might output a stray "ok" on a line of its own (due to a
+# libtool bug on Mac OS X), thus causing a spurious test result to
+# be seen.  See automake bug#11897.
+protect_output ()
+{
+  st=0; "$@" >output 2>&1 || st=1
+  sed 's/^/  /' output
+  test $st -eq 0
+}
+
 command_ok_ "libtoolize" libtoolize
 command_ok_ "aclocal"    $ACLOCAL
 command_ok_ "autoconf"   $AUTOCONF
 command_ok_ "automake"   $AUTOMAKE -a
-command_ok_ "configure"  ./configure
+command_ok_ "configure"  protect_output ./configure
 command_ok_ "make test0" env OBJEXT=foo $MAKE -e test0
 command_ok_ "make test1" $MAKE test1
 
@@ -88,7 +99,7 @@ directive=''; make_can_chain_suffix_rules || directive=TODO
 for target in test2 all distcheck; do
   command_ok_ "make $target"  \
               -D "$directive" -r "suffix rules not chained" \
-              $MAKE $target
+              protect_output $MAKE $target
 done
 
 :