automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/3] Testsuite: avoid Zsh-related problem with `set -x'.


From: Stefano Lattarini
Subject: Re: [PATCH 1/3] Testsuite: avoid Zsh-related problem with `set -x'.
Date: Sun, 13 Dec 2009 18:36:28 +0100
User-agent: KMail/1.12.1 (Linux/2.6.30-2-686; KDE/4.3.2; i686; ; )

Mmhh... there were still some minor warts in the way run_command 
sets/resets xtrace verbosity.  Moreover, I did some things in an over-
complicated way, while there are clearly simpler and better ways.
The amended patch should adress these issues.  Sorry for this further 
tweaking.

-*-*-

Testsuite: avoid Zsh-related problem with `set -x'.
 
* tests/README: Describe Zsh 4.x `set -x' a.k.a. `xtrace' issue
and workaround with run_command.
* tests/defs.in (run_command): New function, to be used for
commands whose standard error needs to be captured.
(AUTOMAKE_run): Reimplemented using run_command. Updated comment.
(AUTOMAKE_fails): Updated comment.
* tests/acloca14.test, ..., tests/version8.test: Use new subroutine
run_command instead of hand-crafted redirections of stdout and/or
stderr.
From aa4fc50e8cfc710ceeb1b9b809020cc136d8f8d3 Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Sat, 5 Dec 2009 15:03:54 +0100
Subject: [PATCH 1/4] Testsuite: avoid Zsh-related problem with `set -x'.

* tests/README: Describe Zsh 4.x `set -x' a.k.a. `xtrace' issue
and workaround with run_command.
* tests/defs.in (run_command): New function, to be used for
commands whose standard error needs to be captured.
(AUTOMAKE_run): Reimplemented using run_command. Updated comment.
(AUTOMAKE_fails): Updated comment.
* tests/acloca14.test: Use new subroutine run_command instead
of hand-crafted redirections of stdout and/or stderr.
* tests/acloca17.test: Likewise.
* tests/acloca18.test: Likewise.
* tests/aclocal.test: Likewise.
* tests/aclocal3.test: Likewise.
* tests/aclocal8.test: Likewise.
* tests/acsilent.test: Likewise.
* tests/alpha.test: Likewise.
* tests/ammissing.test: Likewise.
* tests/ansi3.test: Likewise.
* tests/ansi3b.test: Likewise.
* tests/ccnoco3.test: Likewise.
* tests/check8.test: Likewise.
* tests/cond39.test: Likewise.
* tests/cscope.test: Likewise.
* tests/depcomp2.test: Likewise.
* tests/depcomp4.test: Likewise.
* tests/depend5.test: Likewise.
* tests/depend6.test: Likewise.
* tests/discover.test: Likewise.
* tests/distcom3.test: Likewise.
* tests/fn99.test: Likewise.
* tests/fn99subdir.test: Likewise.
* tests/gnits2.test: Likewise.
* tests/gnits3.test: Likewise.
* tests/help.test: Likewise.
* tests/init.test: Likewise.
* tests/instsh.test: Likewise.
* tests/ldadd.test: Likewise.
* tests/libtool7.test: Likewise.
* tests/libtool9.test: Likewise.
* tests/lisp3.test: Likewise.
* tests/ltorder.test: Likewise.
* tests/man4.test: Likewise.
* tests/mdate.test: Likewise.
* tests/missing3.test: Likewise.
* tests/missing4.test: Likewise.
* tests/missing6.test: Likewise.
* tests/obsolete.test: Likewise.
* tests/output-order.test: Likewise.
* tests/pr220.test: Likewise.
* tests/pr300-ltlib.test: Likewise.
* tests/python11.test: Likewise.
* tests/python4.test: Likewise.
* tests/python5.test: Likewise.
* tests/python6.test: Likewise.
* tests/python7.test: Likewise.
* tests/python8.test: Likewise.
* tests/python9.test: Likewise.
* tests/sanity.test: Likewise.
* tests/subobj.test: Likewise.
* tests/subobj9.test: Likewise.
* tests/unused.test: Likewise.
* tests/vars3.test: Likewise.
* tests/version8.test: Likewise.
---
 ChangeLog               |   66 ++++++++++++++++++++++++++++++
 tests/README            |   10 +++++
 tests/acloca14.test     |    4 +-
 tests/acloca17.test     |    6 +--
 tests/acloca18.test     |   10 ++---
 tests/aclocal.test      |    8 ++--
 tests/aclocal3.test     |    5 +-
 tests/aclocal8.test     |    7 +--
 tests/acsilent.test     |    7 ++-
 tests/alpha.test        |    5 +-
 tests/ammissing.test    |    5 +-
 tests/ansi3.test        |    5 +-
 tests/ansi3b.test       |    5 +-
 tests/ccnoco3.test      |    3 +-
 tests/check8.test       |    8 +---
 tests/cond39.test       |    8 +--
 tests/cscope.test       |    6 +--
 tests/defs.in           |  102 ++++++++++++++++++++++++++++++++++++++++++----
 tests/depcomp2.test     |   14 ++++---
 tests/depcomp4.test     |    7 +--
 tests/depend5.test      |    5 +--
 tests/depend6.test      |    7 +--
 tests/discover.test     |    5 +-
 tests/distcom3.test     |    7 +--
 tests/fn99.test         |    5 +-
 tests/fn99subdir.test   |    5 +-
 tests/gnits2.test       |    6 +-
 tests/gnits3.test       |    6 +-
 tests/help.test         |    4 +-
 tests/init.test         |   18 ++++++--
 tests/instsh.test       |    7 +--
 tests/ldadd.test        |    5 +-
 tests/libtool7.test     |   23 +++++------
 tests/libtool9.test     |    9 ++--
 tests/lisp3.test        |    7 +--
 tests/ltorder.test      |    5 +-
 tests/man4.test         |    8 +--
 tests/mdate.test        |    5 +-
 tests/missing3.test     |   18 ++++----
 tests/missing4.test     |    8 +--
 tests/missing6.test     |    7 +--
 tests/obsolete.test     |    6 +-
 tests/output-order.test |   11 ++---
 tests/pr220.test        |    5 +-
 tests/pr300-ltlib.test  |    6 +--
 tests/python11.test     |    6 +--
 tests/python4.test      |    5 +-
 tests/python5.test      |    5 +-
 tests/python6.test      |    5 +-
 tests/python7.test      |    5 +-
 tests/python8.test      |    5 +-
 tests/python9.test      |    5 +-
 tests/sanity.test       |    6 +--
 tests/subobj.test       |    5 +-
 tests/subobj9.test      |    6 +-
 tests/unused.test       |    6 +-
 tests/vars3.test        |    5 +-
 tests/version8.test     |    5 +-
 58 files changed, 339 insertions(+), 219 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 3e0f5b4..750e144 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,69 @@
+2009-12-05  Stefano Lattarini  <address@hidden>
+
+       Testsuite: avoid Zsh-related problem with `set -x'.
+       * tests/README: Describe Zsh 4.x `set -x' a.k.a. `xtrace' issue
+       and workaround with run_command.
+       * tests/defs.in (run_command): New function, to be used for
+       commands whose standard error needs to be captured.
+       (AUTOMAKE_run): Reimplemented using run_command. Updated comment.
+       (AUTOMAKE_fails): Updated comment.
+       * tests/acloca14.test: Use new subroutine run_command instead
+       of hand-crafted redirections of stdout and/or stderr.
+       * tests/acloca17.test: Likewise.
+       * tests/acloca18.test: Likewise.
+       * tests/aclocal.test: Likewise.
+       * tests/aclocal3.test: Likewise.
+       * tests/aclocal8.test: Likewise.
+       * tests/acsilent.test: Likewise.
+       * tests/alpha.test: Likewise.
+       * tests/ammissing.test: Likewise.
+       * tests/ansi3.test: Likewise.
+       * tests/ansi3b.test: Likewise.
+       * tests/ccnoco3.test: Likewise.
+       * tests/check8.test: Likewise.
+       * tests/cond39.test: Likewise.
+       * tests/cscope.test: Likewise.
+       * tests/depcomp2.test: Likewise.
+       * tests/depcomp4.test: Likewise.
+       * tests/depend5.test: Likewise.
+       * tests/depend6.test: Likewise.
+       * tests/discover.test: Likewise.
+       * tests/distcom3.test: Likewise.
+       * tests/fn99.test: Likewise.
+       * tests/fn99subdir.test: Likewise.
+       * tests/gnits2.test: Likewise.
+       * tests/gnits3.test: Likewise.
+       * tests/help.test: Likewise.
+       * tests/init.test: Likewise.
+       * tests/instsh.test: Likewise.
+       * tests/ldadd.test: Likewise.
+       * tests/libtool7.test: Likewise.
+       * tests/libtool9.test: Likewise.
+       * tests/lisp3.test: Likewise.
+       * tests/ltorder.test: Likewise.
+       * tests/man4.test: Likewise.
+       * tests/mdate.test: Likewise.
+       * tests/missing3.test: Likewise.
+       * tests/missing4.test: Likewise.
+       * tests/missing6.test: Likewise.
+       * tests/obsolete.test: Likewise.
+       * tests/output-order.test: Likewise.
+       * tests/pr220.test: Likewise.
+       * tests/pr300-ltlib.test: Likewise.
+       * tests/python11.test: Likewise.
+       * tests/python4.test: Likewise.
+       * tests/python5.test: Likewise.
+       * tests/python6.test: Likewise.
+       * tests/python7.test: Likewise.
+       * tests/python8.test: Likewise.
+       * tests/python9.test: Likewise.
+       * tests/sanity.test: Likewise.
+       * tests/subobj.test: Likewise.
+       * tests/subobj9.test: Likewise.
+       * tests/unused.test: Likewise.
+       * tests/vars3.test: Likewise.
+       * tests/version8.test: Likewise.
+
 2009-12-05  Antonio Diaz Diaz  <address@hidden>
 
        Replace unlzma, gunzip, bunzip2 with pack tool -d invocation.
diff --git a/tests/README b/tests/README
index d494b10..0b26211 100644
--- a/tests/README
+++ b/tests/README
@@ -133,6 +133,16 @@ Do
   Use $sleep when you have to make sure that some file is newer
   than another.
 
+  To run a program and analyze its stderr, use the run_command function.
+  For example:
+     run_command PROG [ARGS...]
+     grep $pattern stderr
+  or (if you must check that nothing is written on stderr):
+     run_command PROG2 [ARGS...]
+     test ! -s stderr
+  See section "File Descriptors" in the Autoconf manual to understand why
+  this can be useful, or even required.
+
   Use `cat' or `grep' to display (part of) files that may be
   interesting for debugging, so that when a user send a verbose
   output we don't have to ask him for more details.  Display stderr
diff --git a/tests/acloca14.test b/tests/acloca14.test
index 8ddbb1a..cf9c484 100755
--- a/tests/acloca14.test
+++ b/tests/acloca14.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2004, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2004, 2008, 2009  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
@@ -108,5 +108,5 @@ $MAKE testdist2
 
 # Make sure aclocal diagnose missing included files with correct `file:line:'.
 rm -f b.m4
-$ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e 1 $ACLOCAL
 grep 'a.m4:1:.*b.m4.*does not exist' stderr
diff --git a/tests/acloca17.test b/tests/acloca17.test
index 884f24b..788cb9d 100755
--- a/tests/acloca17.test
+++ b/tests/acloca17.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2004, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2004, 2008, 2009  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
@@ -33,7 +33,5 @@ EOF
 
 # FIXME: We want autom4te's 'undefined required macro' warning to be fatal,
 # but have no means to say so to aclocal.  We use WARNINGS=error instead.
-
-WARNINGS=error $ACLOCAL -I m4 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command -e 1 env WARNINGS=error $ACLOCAL -I m4
 grep 'configure.in:4:.*UNDEFINED_MACRO' stderr
diff --git a/tests/acloca18.test b/tests/acloca18.test
index 22feb23..7047eea 100755
--- a/tests/acloca18.test
+++ b/tests/acloca18.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2005, 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2005, 2006, 2008, 2009  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
@@ -86,7 +86,7 @@ grep macro23 foo
 
 ACLOCAL_TESTSUITE_FLAGS='-I 4 -I 1 -I 2'
 rm -f foo
-$ACLOCAL --install 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e 1 $ACLOCAL --install
 grep AM_MACRO2 stderr
 
 ACLOCAL_TESTSUITE_FLAGS='-I 4 -I 1'
@@ -105,9 +105,7 @@ AC_DEFUN([AM_MACRO1], [echo macro1d >> foo])
 AC_DEFUN([AM_MACRO2], [echo macro2d >> foo])
 EOF
 rm -f foo
-$ACLOCAL --diff=diff >output 2>stderr
-cat stderr
-cat output
-grep '#serial 456' output
+run_command $ACLOCAL --diff=diff
+grep '#serial 456' stdout
 test ! -f 4/m1.m4
 grep 'installing.*4/m1.m4' stderr
diff --git a/tests/aclocal.test b/tests/aclocal.test
index 6b87a9d..945b363 100755
--- a/tests/aclocal.test
+++ b/tests/aclocal.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1998, 2001, 2002, 2004, 2008  Free Software Foundation, Inc.
+# Copyright (C) 1998, 2001, 2002, 2004, 2008, 2009  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
@@ -23,15 +23,15 @@ set -e
 $ACLOCAL --output=fred
 test -f fred
 
-$ACLOCAL --output 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e 1 $ACLOCAL --output
 grep 'option.*--output.*an argument' stderr
 grep help stderr
 
-$ACLOCAL --unknown-option 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e 1 $ACLOCAL --unknown-option
 grep 'unrecognized.*--unknown-option' stderr
 grep help stderr
 
-$ACLOCAL --ver 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e 1 $ACLOCAL --ver
 grep 'unrecognized.*--ver' stderr
 grep help stderr
 
diff --git a/tests/aclocal3.test b/tests/aclocal3.test
index a550e50..34c5335 100755
--- a/tests/aclocal3.test
+++ b/tests/aclocal3.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1998, 2002, 2004  Free Software Foundation, Inc.
+# Copyright (C) 1998, 2002, 2004, 2009  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
@@ -27,6 +27,5 @@ AC_DEFUN([GNOME_X_CHECKS], [
 ])
 END
 
-$ACLOCAL -I macros 2>stderr
-cat stderr
+run_command -e 1 $ACLOCAL -I macros
 grep 'macros/gnome.m4:2:.*AM_PATH_GTK.*not found' stderr
diff --git a/tests/aclocal8.test b/tests/aclocal8.test
index ac10aff..4cf7d73 100755
--- a/tests/aclocal8.test
+++ b/tests/aclocal8.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003, 2004  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2009  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
@@ -34,9 +34,8 @@ EOF
 echo 'AC_DEFUN([MACRO1],)' >m4/macro1.m4
 echo 'AC_DEFUN([MACRO2], [AC_REQUIRE([AM_UNUSED_MACRO])])' >m4/macro2.m4
 
-$ACLOCAL -I m4 >output 2>&1
-cat output
-test 0 = `wc -l <output`
+run_command -m $ACLOCAL -I m4
+test -s stdall && Exit 1
 grep macro1.m4 aclocal.m4
 grep macro2.m4 aclocal.m4 && Exit 1
 :
diff --git a/tests/acsilent.test b/tests/acsilent.test
index 6ac7863..e250092 100755
--- a/tests/acsilent.test
+++ b/tests/acsilent.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1996, 2001, 2002, 2008  Free Software Foundation, Inc.
+# Copyright (C) 1996, 2001, 2002, 2008, 2009  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
@@ -32,5 +32,6 @@ module=[$1]
 AC_SUBST(module)])
 END
 
-$ACLOCAL > output 2>&1 || { cat output; Exit 1; }
-test -z "`cat output`"
+run_command -m $ACLOCAL
+test -s stdall && Exit 1
+:
diff --git a/tests/alpha.test b/tests/alpha.test
index 1ee8ed6..1410b9d 100755
--- a/tests/alpha.test
+++ b/tests/alpha.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1998, 2001, 2002, 2003, 2008  Free Software Foundation, Inc.
+# Copyright (C) 1998, 2001, 2002, 2003, 2008, 2009  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
@@ -62,8 +62,7 @@ $AUTOMAKE
 ./configure
 
 # make distdir should fail because NEWS does not mention 1.0a
-$MAKE check 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command -e FAIL $MAKE check
 grep 'NEWS not updated' stderr
 test ! -f works
 
diff --git a/tests/ammissing.test b/tests/ammissing.test
index 61d360a..42aa481 100755
--- a/tests/ammissing.test
+++ b/tests/ammissing.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1997, 2002, 2004  Free Software Foundation, Inc.
+# Copyright (C) 1997, 2002, 2004, 2009  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
@@ -20,6 +20,5 @@
 
 echo AM_ZARDOZ >> configure.in
 
-$ACLOCAL 2>stderr
-cat stderr
+run_command -e 1 $ACLOCAL
 grep 'configure.in:.*AM_ZARDOZ.*not found' stderr
diff --git a/tests/ansi3.test b/tests/ansi3.test
index 2bbcaf7..95e4fc1 100755
--- a/tests/ansi3.test
+++ b/tests/ansi3.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1998, 1999, 2001, 2002, 2003  Free Software Foundation, Inc.
+# Copyright (C) 1998, 1999, 2001, 2002, 2003, 2009  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
@@ -53,8 +53,7 @@ export CFLAGS
 # Linux boxes (Red Hat 5.1 in particular).
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE -a 2>stderr
-cat stderr
+run_command $AUTOMAKE -a
 grep 'Makefile.am:1:.*ansi2knr\.c' stderr
 CC='gcc' ./configure
 ANSI2KNR=./ansi2knr U=_ $MAKE -e
diff --git a/tests/ansi3b.test b/tests/ansi3b.test
index 8f254ad..447b690 100755
--- a/tests/ansi3b.test
+++ b/tests/ansi3b.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1998, 1999, 2001, 2002, 2003  Free Software Foundation, Inc.
+# Copyright (C) 1998, 1999, 2001, 2002, 2003, 2009  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
@@ -52,8 +52,7 @@ export CFLAGS
 # Linux boxes (Red Hat 5.1 in particular).
 $ACLOCAL
 $AUTOCONF
-$AUTOMAKE -a 2>stderr
-cat stderr
+run_command $AUTOMAKE -a
 grep 'configure.in:2:.*ansi2knr\.1' stderr
 CC='gcc' ./configure
 ANSI2KNR=./ansi2knr U=_ $MAKE -e
diff --git a/tests/ccnoco3.test b/tests/ccnoco3.test
index 2e9cd37..93731a1 100755
--- a/tests/ccnoco3.test
+++ b/tests/ccnoco3.test
@@ -74,8 +74,7 @@ CC=`pwd`/../Mycomp
 export CC
 
 ../configure
-$MAKE 2>stderr || { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command $MAKE
 grep 'mv.*the same file' stderr && Exit 1
 
 Exit 0
diff --git a/tests/check8.test b/tests/check8.test
index 7936582..a087cb7 100755
--- a/tests/check8.test
+++ b/tests/check8.test
@@ -67,10 +67,7 @@ $AUTOMAKE -a
 unset TESTS || :
 
 ./configure
-AM_COLOR_TESTS=always $MAKE -e check >stdout 2>stderr &&
-  { cat stdout; cat stderr >&2; Exit 1; }
-cat stdout
-cat stderr >&2
+run_command -e FAIL -- env AM_COLOR_TESTS=always $MAKE -e check
 grep 'XPASS.* foo$' stdout
 grep '^[^X]*PASS.* sub/foo$' stdout
 grep '^[^X]*PASS.* bar' stdout
@@ -87,8 +84,7 @@ $MAKE distclean
 mkdir build
 cd build
 ../configure
-$MAKE check >stdout && { cat stdout; Exit 1; }
-cat stdout
+run_command -e FAIL $MAKE check
 # Note: we are not grepping for the space here, due to the Solaris make VPATH
 # rewriting (if we fix that, we can still write a separate test for it).
 grep 'XPASS.*foo$' stdout
diff --git a/tests/cond39.test b/tests/cond39.test
index 79eaa70..1e44866 100755
--- a/tests/cond39.test
+++ b/tests/cond39.test
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright (C) 2008  Free Software Foundation, Inc.
+# Copyright (C) 2008, 2009  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -82,8 +82,7 @@ $AUTOCONF
 $AUTOMAKE --add-missing
 
 ./configure COND=true
-$MAKE 2>stderr
-cat stderr
+run_command $MAKE
 grep 'overriding commands' stderr && Exit 1
 $MAKE sure-exist
 ./prog1 && Exit 1
@@ -97,8 +96,7 @@ $MAKE sure-exist
 $MAKE distclean
 
 ./configure COND=false
-$MAKE 2>stderr
-cat stderr
+run_command $MAKE
 grep 'overriding commands' stderr && Exit 1
 ./prog1
 ./sub/prog2
diff --git a/tests/cscope.test b/tests/cscope.test
index 716cc38..8669169 100755
--- a/tests/cscope.test
+++ b/tests/cscope.test
@@ -73,8 +73,7 @@ $MAKE -n cscope
 : ${CSCOPE=cscope}
 ( $CSCOPE --version ) >/dev/null 2>&1 || Exit 77
 
-$MAKE cscope 2>stderr
-cat stderr >&2
+run_command $MAKE cscope
 grep 'cannot find file' stderr && Exit 1
 
 test -f cscope.files
@@ -96,8 +95,7 @@ test ! -f cscope.po.out
 
 `pwd`/../configure || Exit 77
 
-$MAKE cscope 2>stderr
-cat stderr >&2
+run_command $MAKE cscope
 grep 'cannot find file' stderr && Exit 1
 $MAKE distclean
 
diff --git a/tests/defs.in b/tests/defs.in
index 6eec344..3925fae 100644
--- a/tests/defs.in
+++ b/tests/defs.in
@@ -399,26 +399,110 @@ is_newest ()
   test -z "$is_newest_files"
 }
 
+# run_command [-e STATUS] [-m] [--] COMMAND [ARGUMENTS..]
+# -------------------------------------------------------
+# Run the given COMMAND with ARGUMENTS, and cause the test to FAIL if
+# COMMAND does not exit with STATUS (more details are given below).
+# Also, save standard output and standard error from COMMAND, by default
+# respectively in files `stdout' and `stderr' (in the current directory),
+# or together in the file `stdall' (in the current directory) if the `-m'
+# option is given.
+# If STATUS is numeric, the exit value of COMMAND must match it exactly.
+# If STATUS is "FAIL" or "FAILURE", then any exit value of COMMAND *but 0*
+# is acceptable.  If STATUS is "IGNORE" or "IGNORED", any exit value of
+# COMMAND is acceptable, and run_command returns with success regardless
+# of that value.  Finally, if STATUS is "RETURN", any exit value of COMMAND
+# is acceptable, *and* such exit value is returned by run_command.
+# Default STATUS is `0'.
+run_command ()
+{
+  # xtrace verbosity is temporarly disabled in (most of) this function
+  case $- in
+    *x*) set +x; run_command_reset_xtrace='set -x';;
+      *) set +x; run_command_reset_xtrace=':';;
+  esac
+  run_exitcode_expected=0
+  run_mix_stdout_and_stderr=no
+  while test $# -gt 0; do
+    case $1 in
+      -e) run_exitcode_expected=$2; shift;;
+      -m) run_mix_stdout_and_stderr=yes;;
+      --) shift; break;;
+      -?) echo "run_commmand: invalid switch \`$1'" >&2; Exit 99;;
+       *) break;;
+    esac
+    shift
+  done
+  case $# in
+    0) echo "run_command: missing COMMAND argument" >&2; Exit 99;;
+    *) run_cmd=$1; shift;;
+  esac
+  if test x"$run_mix_stdout_and_stderr" = x"yes"; then
+    run_evald_cmd='"$run_cmd" ${1+"$@"} >stdall 2>&1'
+  else
+    run_evald_cmd='"$run_cmd" ${1+"$@"} >stdout 2>stderr'
+  fi
+  # NOTE: do not use the apparently simpler construct:
+  #   if eval "$run_evald_cmd"; then
+  #     run_exitcode_got=0
+  #   else
+  #     run_exitcode_got=$?
+  #   fi
+  # as FreeBSD /bin/sh chokes on it when `set -e' is on.
+  if (eval "exec $run_evald_cmd"); then
+    run_exitcode_got=0
+  else
+    run_exitcode_got=$?
+  fi
+  if test x"$run_mix_stdout_and_stderr" = x"yes"; then
+    $run_command_reset_xtrace
+    cat stdall
+ else
+    $run_command_reset_xtrace
+    cat stderr >&2
+    cat stdout
+  fi
+  set +x
+  case $run_exitcode_expected in
+    RETURN|return)
+      $run_command_reset_xtrace
+      return $run_exitcode_got  # RETURN POINT HERE
+      ;;
+    IGNORE|ignore|IGNORED|ignored|$run_exitcode_got)
+      run_ok=yes
+      ;;
+    FAIL|fail|FAILURE|failure)
+      if test $run_exitcode_got -gt 0; then
+        run_ok=yes
+      else
+        run_ok=no
+      fi
+      ;;
+    *)
+      run_ok=no
+      ;;
+  esac
+  echo "run_command: exit status $run_exitcode_got (expecting" \
+       "$run_exitcode_expected)"
+  $run_command_reset_xtrace
+  test x"$run_ok" = x"yes" || Exit 1
+}
 
 # AUTOMAKE_run status [options...]
 # --------------------------------
-# Run Automake with OPTIONS, and fail if automake
+# Run Automake with OPTIONS, and cause the test to FAIL if automake
 # does not exit with STATUS.
 AUTOMAKE_run ()
 {
-  expected_exitcode=$1
+  am_run_expected_exitcode=$1
   shift
-  exitcode=0
-  $AUTOMAKE ${1+"$@"} >stdout 2>stderr || exitcode=$?
-  cat stderr >&2
-  cat stdout
-  test $exitcode = $expected_exitcode || Exit 1
+  run_command -e $am_run_expected_exitcode -- $AUTOMAKE ${1+"$@"}
 }
 
 # AUTOMAKE_fails [options...]
 # ---------------------------
-# Run Automake with OPTIONS, and fail if automake
-# does not exit with STATUS.
+# Run Automake with OPTIONS, and cuse the test to FAIL if automake
+# does not exit with status 1.
 AUTOMAKE_fails ()
 {
   AUTOMAKE_run 1 ${1+"$@"}
diff --git a/tests/depcomp2.test b/tests/depcomp2.test
index 4653c90..0daf2f0 100755
--- a/tests/depcomp2.test
+++ b/tests/depcomp2.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2009  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
@@ -20,6 +20,8 @@
 required=gcc
 . ./defs || Exit 1
 
+set -e
+
 cat > configure.in << 'END'
 AC_INIT(subdir/foo.c)
 AM_INIT_AUTOMAKE(nonesuch, nonesuch)
@@ -45,8 +47,8 @@ END
 CFLAGS=
 export CFLAGS
 
-$ACLOCAL || Exit 1
-$AUTOMAKE --add-missing || Exit 1
-$AUTOCONF || Exit 1
-./configure CC='gcc' 2>error.log
-test -z "`cat error.log`"
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+run_command ./configure CC='gcc'
+test ! -s stderr
diff --git a/tests/depcomp4.test b/tests/depcomp4.test
index 7d22894..70cbd57 100755
--- a/tests/depcomp4.test
+++ b/tests/depcomp4.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2009  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
@@ -51,7 +51,6 @@ $AUTOMAKE -a
 grep am_cv_CC_dependencies_compiler_type configure
 
 ./configure am_cv_CC_dependencies_compiler_type=makedepend
-$MAKE >output 2>&1
-cat output
-grep 'unknown directive' output && Exit 1
+run_command -m $MAKE
+grep 'unknown directive' stdall && Exit 1
 $MAKE grepdeps
diff --git a/tests/depend5.test b/tests/depend5.test
index 0d9be3b..52e4169 100755
--- a/tests/depend5.test
+++ b/tests/depend5.test
@@ -65,10 +65,7 @@ for arg in Makefile \
   "--file=$name"
 do
   rm -rf .deps _deps
-  ./config.status "$arg" depfiles >stdout 2>stderr ||
-    { cat stdout; cat stderr >&2; Exit 1; }
-  cat stdout
-  cat stderr >&2
+  run_command ./config.status "$arg" depfiles
   grep '[Nn]o such file' stderr && Exit 1
 
   if test -n "$depdir"; then
diff --git a/tests/depend6.test b/tests/depend6.test
index de2adf9..5ce2208 100755
--- a/tests/depend6.test
+++ b/tests/depend6.test
@@ -39,9 +39,6 @@ END
 $ACLOCAL
 $AUTOMAKE
 $AUTOCONF
-./configure --disable-dependency-tracking 2>stderr || {
-  stat=$?; cat stderr >&2; Exit $stat;
-}
-cat stderr >&2
-grep shift stderr && Exit 1
+run_command ./configure --disable-dependency-tracking
+grep 'shift' stderr && Exit 1
 :
diff --git a/tests/discover.test b/tests/discover.test
index 36293f7..c62f1b4 100755
--- a/tests/discover.test
+++ b/tests/discover.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1996, 1997, 2000, 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 2000, 2001, 2002, 2009  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
@@ -34,5 +34,6 @@ END
 : > fsusage.c
 
 $ACLOCAL || Exit 1
-$AUTOMAKE 2>&1 | $FGREP fsusage.c || Exit 1
+run_command -e IGNORE -m $AUTOMAKE
+$FGREP fsusage.c stdall || Exit 1
 Exit 0
diff --git a/tests/distcom3.test b/tests/distcom3.test
index 04bf365..fdcc31a 100755
--- a/tests/distcom3.test
+++ b/tests/distcom3.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002, 2003, 2004, 2006  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2004, 2006, 2009  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
@@ -34,9 +34,8 @@ END
 $ACLOCAL
 
 # Should not warn about missing README, since it is a target.
-$AUTOMAKE --add-missing --gnu >stdout 2>&1
-cat stdout
-grep README stdout && Exit 1
+run_command -m $AUTOMAKE --add-missing --gnu
+grep README stdall && Exit 1
 
 sed -n -e '/^DIST_COMMON =.*\\$/ {
    :loop
diff --git a/tests/fn99.test b/tests/fn99.test
index 982a989..611c767 100755
--- a/tests/fn99.test
+++ b/tests/fn99.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2004, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2004, 2008, 2009  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
@@ -47,8 +47,7 @@ do
   touch x
 done) || Exit 77
 
-$MAKE dist 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command -e FAIL $MAKE dist
 grep 'filenames are too long' stderr
 test 2 = `grep 12345678 stderr | wc -l`
 :
diff --git a/tests/fn99subdir.test b/tests/fn99subdir.test
index 465f2af..7055e85 100755
--- a/tests/fn99subdir.test
+++ b/tests/fn99subdir.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008, 2009  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
@@ -73,8 +73,7 @@ do
   touch x
 done)
 
-$MAKE dist 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command -e FAIL $MAKE dist
 grep 'filenames are too long' stderr
 test 1 = `grep 12345678 stderr | wc -l`
 :
diff --git a/tests/gnits2.test b/tests/gnits2.test
index 4c5d54f..a85b096 100755
--- a/tests/gnits2.test
+++ b/tests/gnits2.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002, 2003, 2004, 2007  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2004, 2007, 2009  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
@@ -105,6 +105,6 @@ cd build
 ../configure "--prefix=`pwd`/../inst-dir" --program-prefix=p
 $MAKE all
 $MAKE test-install
-$MAKE -k installcheck 2>stderr || : # Never trust the exit status of make -k.
-cat stderr
+# Never trust the exit status of make -k.
+run_command -e IGNORE $MAKE -k installcheck
 $MAKE grep-stderr
diff --git a/tests/gnits3.test b/tests/gnits3.test
index 7a08fb8..4d90684 100755
--- a/tests/gnits3.test
+++ b/tests/gnits3.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002, 2007  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2007, 2009  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
@@ -83,8 +83,8 @@ cd build
 ../configure "--prefix=`pwd`/../inst-dir" --program-prefix=p
 $MAKE
 $MAKE install
-$MAKE -k installcheck 2>stderr || : # Never trust the exit status of make -k.
-cat stderr
+# Never trust the exit status of make -k.
+run_command -e IGNORE $MAKE -k installcheck
 $MAKE grep-stderr
 
 # Make sure there is no more error when all targets are exempted.
diff --git a/tests/help.test b/tests/help.test
index d4d7110..cae8967 100755
--- a/tests/help.test
+++ b/tests/help.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2008, 2009  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
@@ -32,7 +32,7 @@ $AUTOMAKE --version
 $AUTOMAKE --help
 
 # aclocal and automake cannot work without configure.ac or configure.in
-$ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e 1 $ACLOCAL
 grep configure.ac stderr
 grep configure.in stderr
 AUTOMAKE_fails
diff --git a/tests/init.test b/tests/init.test
index 38ec681..b6a7375 100755
--- a/tests/init.test
+++ b/tests/init.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008, 2009  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
@@ -27,7 +27,17 @@ AM_INIT_AUTOMAKE
 END
 
 # The error message should mension AC_INIT, not AC_PACKAGE_VERSION.
-($ACLOCAL && $AUTOCONF) 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr >&2
+if run_command -e RETURN $ACLOCAL; then
+    success=yes
+else
+    success=no
+fi
+if test x"$success" != x"no"; then
+  mv stderr stder1
+  run_command -e RETURN $AUTOCONF || success=no
+  cat stderr >>stder1
+  mv -f stder1 stderr
+fi
+test x"$success" = x"no" || Exit 1
 grep AC_PACKAGE_VERSION stderr && Exit 1
-grep AC_INIT stderr
+grep AC_INIT stderr || Exit 1
diff --git a/tests/instsh.test b/tests/instsh.test
index 61f5f9e..fe3d485 100755
--- a/tests/instsh.test
+++ b/tests/instsh.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1996, 1999, 2001, 2002, 2003  Free Software Foundation, Inc.
+# Copyright (C) 1996, 1999, 2001, 2002, 2003, 2009  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
@@ -32,10 +32,9 @@ mv Makefile.am configure.in frob/
 cd frob
 
 $ACLOCAL
-$AUTOMAKE --add-missing > output 2>&1
+run_command -m $AUTOMAKE --add-missing
 
 # Only one `/' should appear in the output.
-cat output
-grep '/.*/' output && Exit 1
+grep '/.*/' stdall && Exit 1
 
 test -f install-sh
diff --git a/tests/ldadd.test b/tests/ldadd.test
index 005f9d8..0a9907d 100755
--- a/tests/ldadd.test
+++ b/tests/ldadd.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1997, 1999, 2000, 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 1997, 1999, 2000, 2001, 2002, 2009  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
@@ -39,5 +39,6 @@ END
 : > q.c
 
 $ACLOCAL || Exit 1
-$AUTOMAKE 2>&1 | grep LDADD || Exit 1
+run_command -e 1 -m $AUTOMAKE
+grep LDADD stdall || Exit 1
 Exit 0
diff --git a/tests/libtool7.test b/tests/libtool7.test
index a2f912f..f8706d9 100755
--- a/tests/libtool7.test
+++ b/tests/libtool7.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003, 2004, 2007  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2007, 2009  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
@@ -82,19 +82,16 @@ $AUTOCONF
 $AUTOMAKE --add-missing --copy
 
 ./configure "--prefix=`pwd`/_inst"
-env LIBTOOLFLAGS=--silent $MAKE print >output 2>&1
-cat output
-grep '1BEG: libmod1.la mod2.la :END1' output
-grep '2BEG: mod2.la :END2' output
-grep '3BEG: .*silent.*silent.* :END3' output
+run_command -m env LIBTOOLFLAGS=--silent $MAKE print
+grep '1BEG: libmod1.la mod2.la :END1' stdall
+grep '2BEG: mod2.la :END2' stdall
+grep '3BEG: .*silent.*silent.* :END3' stdall
 test 2 -le `grep mod2_la_LIBTOOLFLAGS Makefile | wc -l`
 $MAKE
 
-env LIBTOOLFLAGS=--silent $MAKE install >output 2>&1
-cat output
-grep 'silent.*silent.*prg' output
-grep 'silent.*silent.*libmod1' output
+run_command -m env LIBTOOLFLAGS=--silent $MAKE install
+grep 'silent.*silent.*prg' stdall
+grep 'silent.*silent.*libmod1' stdall
 
-env LIBTOOLFLAGS=--silent $MAKE uninstall >output 2>&1
-cat output
-grep 'silent.*silent.*libmod1' output
+run_command -m env LIBTOOLFLAGS=--silent $MAKE uninstall
+grep 'silent.*silent.*libmod1' stdall
diff --git a/tests/libtool9.test b/tests/libtool9.test
index c0d9688..94e617b 100755
--- a/tests/libtool9.test
+++ b/tests/libtool9.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2005  Free Software Foundation, Inc.
+# Copyright (C) 2005, 2009  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
@@ -88,10 +88,11 @@ $AUTOCONF
 $AUTOMAKE --add-missing --copy
 
 ./configure
-env LDFLAGS=ldflags AM_LDFLAGS=am_ldflags libmod1_la_LDFLAGS=lm1_la_ldflags \
+run_command -m env \
+    LDFLAGS=ldflags AM_LDFLAGS=am_ldflags libmod1_la_LDFLAGS=lm1_la_ldflags \
     CFLAGS=cflags AM_CFLAGS=am_cflags prg2_CFLAGS=prg2_cflags \
-    $MAKE -e print >output 2>&1
-cat output
+    $MAKE -e print
+mv stdall output
 grep '1BEG: libmod1.la mod2.la :END1' output
 grep '2BEG: mod2.la :END2' output
 grep '3BEG:.* am_cflags cflags .*lm1_la_ldflags ldflags.* :END3' output
diff --git a/tests/lisp3.test b/tests/lisp3.test
index 809d491..086173d 100755
--- a/tests/lisp3.test
+++ b/tests/lisp3.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2008, 2009  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
@@ -61,9 +61,8 @@ test -f am-one.elc
 unique=0a3346e2af8a689b85002b53df09142a
 $sleep
 echo "(message \"$unique\")(provide 'am-three)" > am-three.el
-$MAKE >output 2>&1
-cat output
-grep $unique output
+run_command -m $MAKE
+grep $unique stdall
 
 # It should also work for VPATH-builds.
 $MAKE distcheck
diff --git a/tests/ltorder.test b/tests/ltorder.test
index 0f69211..1e6a03a 100755
--- a/tests/ltorder.test
+++ b/tests/ltorder.test
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright (C) 2008  Free Software Foundation, Inc.
+# Copyright (C) 2008, 2009  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
@@ -53,8 +53,7 @@ $AUTOMAKE --add-missing
 ./configure "--prefix=`pwd`/inst"
 
 $MAKE
-$MAKE install 2>stderr || { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command $MAKE install
 grep 'has not been installed' stderr && Exit 1
 
 $MAKE uninstall
diff --git a/tests/man4.test b/tests/man4.test
index aa86a9e..7424c72 100755
--- a/tests/man4.test
+++ b/tests/man4.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2008  Free Software Foundation, Inc.
+# Copyright (C) 2008, 2009  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
@@ -88,11 +88,9 @@ mkdir build
 cd build
 ../configure
 $MAKE
-$MAKE dist 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command -e FAIL $MAKE dist
 grep 'install help2man' stderr
-$MAKE distcheck 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command -e FAIL $MAKE distcheck
 grep 'install help2man' stderr
 
 rm -f ../help2man
diff --git a/tests/mdate.test b/tests/mdate.test
index 704b393..e63bff9 100755
--- a/tests/mdate.test
+++ b/tests/mdate.test
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright (C) 1996, 1997, 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 2001, 2002, 2009  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
@@ -31,4 +31,5 @@ END
 : > texinfo.tex
 
 $ACLOCAL || Exit 1
-$AUTOMAKE 2>&1 > /dev/null | grep 'required file.*mdate-sh'
+run_command -e IGNORED $AUTOMAKE
+grep 'required file.*mdate-sh' stderr
diff --git a/tests/missing3.test b/tests/missing3.test
index 07ef779..9b48368 100755
--- a/tests/missing3.test
+++ b/tests/missing3.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2004, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2004, 2008, 2009  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
@@ -22,24 +22,24 @@ set -e
 
 # b7cb8259 assumed not to exist.
 
-./missing b7cb8259 --version 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e FAIL ./missing b7cb8259 --version
 grep . stderr && Exit 1
-./missing b7cb8259 --grep 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e FAIL ./missing b7cb8259 --grep
 grep WARNING stderr
 
-./missing --run b7cb8259 --version && Exit 1
-./missing --run b7cb8259 --grep 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e FAIL ./missing --run b7cb8259 --version
+run_command -e FAIL ./missing --run b7cb8259 --grep
 grep WARNING stderr
 
 # missing itself it known to exist :)
 
-./missing ./missing --version 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e FAIL ./missing ./missing --version
 grep . stderr && Exit 1
-./missing ./missing --grep 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e FAIL ./missing ./missing --grep
 grep WARNING stderr
 
-./missing --run ./missing --version 2>stderr
+run_command ./missing --run ./missing --version
 grep . stderr && Exit 1
-./missing --run ./missing --grep 2>stderr && { cat stderr >&2; Exit 1; }
+run_command -e FAIL ./missing --run ./missing --grep
 grep WARNING stderr && Exit 1
 grep Unknown stderr
diff --git a/tests/missing4.test b/tests/missing4.test
index 1015828..c6c3b7e 100755
--- a/tests/missing4.test
+++ b/tests/missing4.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2006, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2006, 2007, 2008, 2009  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
@@ -36,13 +36,11 @@ cmp aclocal.m4 aclocal.tmp && Exit 1
 
 mv aclocal.tmp aclocal.m4
 
-$MAKE 2>stderr
-cat stderr
+run_command $MAKE
 grep 'You have another version of autoconf' stderr
 grep -c 'aclocal.m4:.*this file was generated for' stderr
 
-$MAKE 2>stderr
-cat stderr
+run_command $MAKE
 grep 'You have another version of autoconf' stderr && Exit 1
 grep 'aclocal.m4:.*this file was generated for' stderr && Exit 1
 
diff --git a/tests/missing6.test b/tests/missing6.test
index b63a0d1..bf6df2d 100755
--- a/tests/missing6.test
+++ b/tests/missing6.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2008  Free Software Foundation, Inc.
+# Copyright (C) 2008, 2009  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
@@ -31,7 +31,7 @@ rm -f configure.in
 touch Makefile.am
 
 $ACLOCAL
-$AUTOCONF 2>stderr
+run_command $AUTOCONF
 grep 'You have another version of autoconf' stderr
 grep 'aclocal.m4:.*this file was generated for' stderr
 $AUTOMAKE
@@ -43,8 +43,7 @@ cmp configure.ac configure.tmp && Exit 1
 
 mv configure.tmp configure.ac
 
-$MAKE 2>stderr
-cat stderr
+run_command $MAKE
 grep 'You have another version of autoconf' stderr
 grep 'aclocal.m4:.*this file was generated for autoconf 9999a' stderr
 
diff --git a/tests/obsolete.test b/tests/obsolete.test
index e6601c9..daae69c 100755
--- a/tests/obsolete.test
+++ b/tests/obsolete.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1996, 2001, 2002, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 1996, 2001, 2002, 2007, 2008, 2009  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
@@ -27,7 +27,7 @@ END
 $PERL -ne '/AU_DEFUN\(\[(\w+)\]/ && print "$1\n"' \
     "$testsrcdir/../m4/obsolete.m4" >> obs
 cat obs >> configure.in
-$PERL -ne 'chomp; print "grep $_ stderr || Exit 1\n"; ' obs > obs.1
+$PERL -ne 'chomp; print "grep $_ stdall || Exit 1\n"; ' obs > obs.1
 $PERL -ne 'chomp; print "grep $_ configure.in && Exit 1\n"; ' obs > obs.2
 
 # Sanity check.  Make sure we have added something to configure.in.
@@ -36,7 +36,7 @@ test `cat configure.in | wc -l` -gt 1 || Exit 1
 $ACLOCAL || Exit 1
 
 # Expect Autoconf to complain about each of the macros in obs.
-$AUTOCONF -Wobsolete >stderr 2>&1
+run_command -m $AUTOCONF -Wobsolete
 . ./obs.1
 # Make sure Autoupdate remove each of these macros.
 $AUTOUPDATE || Exit 1
diff --git a/tests/output-order.test b/tests/output-order.test
index 856baa2..852c194 100755
--- a/tests/output-order.test
+++ b/tests/output-order.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2008  Free Software Foundation, Inc.
+# Copyright (C) 2008, 2009  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
@@ -43,13 +43,12 @@ END
 $ACLOCAL
 $AUTOCONF
 rm -f missing install-sh
-$AUTOMAKE --add-missing --copy 2>stderr
-cat stderr >&2
+run_command $AUTOMAKE --add-missing --copy
+mv stderr stder0
 
 for i in 1 2 3 4 5 6; do
   rm -f missing install-sh INSTALL COPYING
+  run_command -e IGNORE $AUTOMAKE --add-missing --copy
   # The grep prevents a Heisenbug with the HP-UX shell and VERBOSE=yes.
-  $AUTOMAKE --add-missing --copy 2>&1 >/dev/null |
-  grep -v /dev/null |
-  diff - stderr
+  grep -v /dev/null stder0 | diff - stderr
 done
diff --git a/tests/pr220.test b/tests/pr220.test
index 25e1f0e..6644d28 100755
--- a/tests/pr220.test
+++ b/tests/pr220.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002, 2004, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2004, 2008, 2009  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
@@ -55,6 +55,5 @@ $AUTOMAKE -a
 
 cd build
 # configure should fail since we've done something invalid.
-../configure 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command -e FAIL ../configure
 grep NEVER_TRUE stderr
diff --git a/tests/pr300-ltlib.test b/tests/pr300-ltlib.test
index 01814a9..7ed0a2f 100755
--- a/tests/pr300-ltlib.test
+++ b/tests/pr300-ltlib.test
@@ -48,8 +48,7 @@ $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --copy --add-missing
 ./configure --prefix "`pwd`/inst"
-$MAKE V=1 >stdout
-cat stdout
+run_command $MAKE V=1
 
 grep 'liba.la .*-rpath .*lib' stdout
 grep 'liba.la .*-rpath .*lib/subdir' stdout && Exit 1
@@ -58,8 +57,7 @@ grep 'libb.la .*-rpath .*lib/subdir' stdout
 test -f subdir/liba.la
 test -f subdir/libb.la
 
-$MAKE install 2>stderr
-cat stderr >&2
+run_command $MAKE install
 grep 'remember.*--finish' stderr && Exit 1
 
 test -f inst/lib/liba.la
diff --git a/tests/python11.test b/tests/python11.test
index 0f15f37..920de88 100755
--- a/tests/python11.test
+++ b/tests/python11.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2004, 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2004, 2006, 2008, 2009  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
@@ -35,9 +35,7 @@ EOF
 $ACLOCAL
 $AUTOCONF
 
-./configure >stdout 2>stderr && { cat stdout; cat stderr >&2; Exit 1; }
-cat stdout
-cat stderr >&2
+run_command -e FAILURE ./configure
 grep 'checking for IShouldNotExist1' stdout
 grep 'checking for IShouldNotExist2' stdout
 grep 'no suitable Python interpreter found' stderr
diff --git a/tests/python4.test b/tests/python4.test
index 11bb3ed..3ff44af 100755
--- a/tests/python4.test
+++ b/tests/python4.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2008, 2009  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
@@ -33,6 +33,5 @@ $AUTOCONF
 $AUTOMAKE --add-missing
 
 # Simulate no Python
-./configure PYTHON=: 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command -e FAILURE ./configure PYTHON=:
 grep 'no suitable Python interpreter found' stderr
diff --git a/tests/python5.test b/tests/python5.test
index 86f5863..5695876 100755
--- a/tests/python5.test
+++ b/tests/python5.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2008, 2009  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
@@ -34,6 +34,5 @@ $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --add-missing
 
-./configure 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr >&2
+run_command -e FAILURE ./configure
 grep 'no suitable Python interpreter found' stderr
diff --git a/tests/python6.test b/tests/python6.test
index eb4fb4d..ed60e03 100755
--- a/tests/python6.test
+++ b/tests/python6.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2009  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
@@ -34,6 +34,5 @@ $AUTOCONF
 $AUTOMAKE --add-missing
 
 # Simulate no Python
-./configure PYTHON=: 2>stderr
-cat stderr
+run_command ./configure PYTHON=:
 grep 'GREP ME:' stderr
diff --git a/tests/python7.test b/tests/python7.test
index 62c1a1b..eb6a4dc 100755
--- a/tests/python7.test
+++ b/tests/python7.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2009  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
@@ -34,6 +34,5 @@ $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --add-missing
 
-./configure 2>stderr
-cat stderr
+run_command ./configure
 grep 'GREP ME:' stderr
diff --git a/tests/python8.test b/tests/python8.test
index a50af22..5f100ab 100755
--- a/tests/python8.test
+++ b/tests/python8.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2009  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
@@ -32,6 +32,5 @@ $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --add-missing
 
-./configure 2>stderr
-cat stderr
+run_command ./configure
 grep 'GREP ME' stderr
diff --git a/tests/python9.test b/tests/python9.test
index 9b23deb..c0fa7a5 100755
--- a/tests/python9.test
+++ b/tests/python9.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2003  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2009  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
@@ -33,6 +33,5 @@ $ACLOCAL
 $AUTOCONF
 $AUTOMAKE --add-missing
 
-./configure 2>stderr
-cat stderr
+run_command ./configure
 grep 'GREP ME' stderr
diff --git a/tests/sanity.test b/tests/sanity.test
index 1c96c78..1296381 100755
--- a/tests/sanity.test
+++ b/tests/sanity.test
@@ -36,14 +36,12 @@ cp ../install-sh ../missing .
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE
-./configure 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr
+run_command -e FAILURE ./configure
 grep 'unsafe absolute working directory' stderr
 
 cd ..
 mkdir build
 cd build
-../unsafe$/configure 2>stderr && { cat stderr >&2; Exit 1; }
-cat stderr
+run_command -e FAILURE ../unsafe$/configure
 grep 'unsafe srcdir' stderr
 :
diff --git a/tests/subobj.test b/tests/subobj.test
index df297f4..9d7882d 100755
--- a/tests/subobj.test
+++ b/tests/subobj.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1999, 2001, 2002, 2004  Free Software Foundation, Inc.
+# Copyright (C) 1999, 2001, 2002, 2004, 2009  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
@@ -32,8 +32,7 @@ wish_SOURCES = generic/a.c generic/b.c
 END
 
 $ACLOCAL
-$AUTOMAKE --add-missing 2>stderr
-cat stderr
+run_command $AUTOMAKE --add-missing
 # Make sure compile is installed, and that Automake says so.
 grep 'install.*compile' stderr
 test -f compile
diff --git a/tests/subobj9.test b/tests/subobj9.test
index 99fe6e8..1f68721 100755
--- a/tests/subobj9.test
+++ b/tests/subobj9.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2004, 2005, 2009  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
@@ -74,8 +74,8 @@ if test -n "`./libtool --help | grep tag=TAG`"; then
 fi
 
 $MAKE
-$MAKE distcheck 2>&1 | tee out
+run_command -m $MAKE distcheck
 # GNU Make used to complain that the Makefile contained two rules
 # for `src/.dirstamp' and `.//src/.dirstamp'.
-grep 'overriding commands' out && Exit 1
+grep 'overriding commands' stdall && Exit 1
 :
diff --git a/tests/unused.test b/tests/unused.test
index a5b4da6..68d5613 100755
--- a/tests/unused.test
+++ b/tests/unused.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1998, 2002, 2003, 2008  Free Software Foundation, Inc.
+# Copyright (C) 1998, 2002, 2003, 2008, 2009  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
@@ -29,5 +29,5 @@ AC_DEFUN([MACRO_1_2], echo 12)
 AC_DEFUN([MACRO_1_2_3], echo 123)
 END
 
-$ACLOCAL 2> stderr || { cat stderr >&2; Exit 1; }
-test -z "`cat stderr`"
+run_command $ACLOCAL
+test ! -s stderr
diff --git a/tests/vars3.test b/tests/vars3.test
index 3d10a90..9f11262 100755
--- a/tests/vars3.test
+++ b/tests/vars3.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2002  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2009  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
@@ -38,8 +38,7 @@ EOF
 
 $ACLOCAL
 # Make sure this warning is print in the `portability' category.
-$AUTOMAKE --warnings=no-error,none,portability 2>stderr
-cat stderr
+run_command $AUTOMAKE --warnings=no-error,none,portability
 
 # Lines number are printed in error message.
 # Use them to make sure errors are diagnosed against the right lines.
diff --git a/tests/version8.test b/tests/version8.test
index 91b11a0..ffe4a3e 100755
--- a/tests/version8.test
+++ b/tests/version8.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2005, 2008, 2009  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
@@ -20,6 +20,5 @@
 
 set -e
 echo 'AM_AUTOMAKE_VERSION([1.9])' >>configure.in
-$ACLOCAL 2>stderr && { cat stderr >&2; Exit 0; }
-cat stderr >&2
+run_command -e 1 $ACLOCAL
 $FGREP 'AM_INIT_AUTOMAKE([1.9])' stderr
-- 
1.6.5


reply via email to

[Prev in Thread] Current Thread [Next in Thread]