Subject: Re: bug#11897: automake 1.12.2 test failure on Mac OS X 10.7

From: Stefano Lattarini <[email-masked]>
Date: Tue, 10 Jul 2012 16:06:37 +0200

On 07/10/2012 03:56 PM, Max Horn wrote:
>
> This fixes most of the errors, except for
> 
> PASS: t/suffix8.tap 10
> ERROR: t/suffix8.tap 10 - make distcheck # UNPLANNED
> ERROR: t/suffix8.tap - too many tests run (expected 10, got 11)
> 
> I looked at the log, this is again the same issue, configure
> is run once again
>
Of course, by "make distcheck"! *faceplam*  I should have been more
careful.

> and once again suffers from the same problem.
> 
Does the attached patch fares better?

Thanks,
  Stefano
>From 65e7ac8c3556d1895ee597811856710143cfc4ac Mon Sep 17 00:00:00 2001
Message-Id: <65e7ac8c3[email-masked]>
From: Stefano Lattarini <[email-masked]>
Date: Tue, 10 Jul 2012 15:29:57 +0200
Subject: [PATCH] tests: avoid spurious TAP errors on Mac OS X 10.7

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 <[email-masked]>
---
 THANKS         |    1 +
 t/suffix10.tap |   13 ++++++++++++-
 t/suffix8.tap  |   15 +++++++++++++--
 3 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/THANKS b/THANKS
index 01b78c1..afdd33a 100644
--- a/THANKS
+++ b/THANKS
@@ -245,6 +245,7 @@ Matthew D. Langston             [email-masked]
 Matthias Andree                 [email-masked]
 Matthias Clasen                 [email-masked]
 Matthias Klose                  [email-masked]
+Max Horn                        [email-masked]
 Maxim Sinev                     [email-masked]
 Maynard Johnson                 [email-masked]
 Merijn de Jonge                 [email-masked]
diff --git a/t/suffix10.tap b/t/suffix10.tap
index a650924..7e19e04 100755
--- a/t/suffix10.tap
+++ b/t/suffix10.tap
@@ -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
diff --git a/t/suffix8.tap b/t/suffix8.tap
index fdaf087..516c9b2 100755
--- a/t/suffix8.tap
+++ b/t/suffix8.tap
@@ -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
 
 :
-- 
1.7.9.5