Testsuite: run_command can now set env variables * tests/defs.in (run_command): Now this function can set additional environment variables for the command it runs; it does so by properly invoking the `env' utility. Also, an empty COMMAND argument is now equivalent to specifying the `env' command. Documentation updated accordingly. * tests/acloca17.test: Removed now useless `env' calls from `run_command' invocations. * tests/check11.test: Likewise. * tests/check5.test: Likewise. * tests/check7.test: Likewise. * tests/check8.test: Likewise. * tests/cond22.test: Likewise. * tests/cond30.test: Likewise. * tests/defs.in: Likewise. * tests/distdir.test: Likewise. * tests/exeext.test: Likewise. * tests/libtool7.test: Likewise. * tests/libtool9.test: Likewise. * tests/parallel-tests.test: Likewise. * tests/parallel-tests2.test: Likewise. * tests/subst2.test: Likewise. * tests/suffix11.test: Likewise. * tests/suffix12.test: Likewise. * tests/suffix8.test: Likewise.
From 7b600ff8bea4e0fd7f075b61ef06f22b456cf190 Mon Sep 17 00:00:00 2001 From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Sat, 30 Jan 2010 19:18:18 +0100 Subject: [PATCH 7/8] Testsuite: run_command can now set env variables
* tests/defs.in (run_command): Now this function can set additional environment variables for the command it runs; it does so by properly invoking the `env' utility. Also, an empty COMMAND argument is now equivalent to specifying the `env' command. Documentation updated accordingly. * tests/acloca17.test: Removed now useless `env' calls from `run_command' invocations. * tests/check11.test: Likewise. * tests/check5.test: Likewise. * tests/check7.test: Likewise. * tests/check8.test: Likewise. * tests/cond22.test: Likewise. * tests/cond30.test: Likewise. * tests/defs.in: Likewise. * tests/distdir.test: Likewise. * tests/exeext.test: Likewise. * tests/libtool7.test: Likewise. * tests/libtool9.test: Likewise. * tests/parallel-tests.test: Likewise. * tests/parallel-tests2.test: Likewise. * tests/subst2.test: Likewise. * tests/suffix11.test: Likewise. * tests/suffix12.test: Likewise. * tests/suffix8.test: Likewise. --- ChangeLog | 29 +++++++++++++++++++++++++++++ tests/acloca17.test | 2 +- tests/check11.test | 4 ++-- tests/check5.test | 2 +- tests/check7.test | 2 +- tests/check8.test | 2 +- tests/cond22.test | 2 +- tests/cond30.test | 4 ++-- tests/defs.in | 17 +++++++++++------ tests/distdir.test | 2 +- tests/exeext.test | 4 ++-- tests/libtool7.test | 6 +++--- tests/libtool9.test | 2 +- tests/parallel-tests.test | 16 ++++++++-------- tests/parallel-tests2.test | 4 ++-- tests/subst2.test | 4 ++-- tests/suffix11.test | 2 +- tests/suffix12.test | 2 +- tests/suffix8.test | 2 +- 19 files changed, 71 insertions(+), 37 deletions(-) diff --git a/ChangeLog b/ChangeLog index 80aad4d..7a98b1a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,34 @@ 2010-01-31 Stefano Lattarini <stefano.lattar...@gmail.com> + Testsuite: improve function `run_command': now it can set + additional environment variables for the command it runs. + * tests/defs.in (run_command): Now this function can set + additional environment variables for the command it runs; + it does so by properly invoking the `env' utility. Also, + an empty COMMAND argument is now equivalent to specifying + the `env' command. Documentation updated accordingly. + * tests/acloca17.test: Removed now useless `env' calls + from `run_command' invocations. + * tests/check11.test: Likewise. + * tests/check5.test: Likewise. + * tests/check7.test: Likewise. + * tests/check8.test: Likewise. + * tests/cond22.test: Likewise. + * tests/cond30.test: Likewise. + * tests/defs.in: Likewise. + * tests/distdir.test: Likewise. + * tests/exeext.test: Likewise. + * tests/libtool7.test: Likewise. + * tests/libtool9.test: Likewise. + * tests/parallel-tests.test: Likewise. + * tests/parallel-tests2.test: Likewise. + * tests/subst2.test: Likewise. + * tests/suffix11.test: Likewise. + * tests/suffix12.test: Likewise. + * tests/suffix8.test: Likewise. + +2010-01-31 Stefano Lattarini <stefano.lattar...@gmail.com> + Testsuite: prefer use of `run_command' subroutine over "direct" stdout redirection in some test scripts (unless the latter is definitely clearer/more convenient). diff --git a/tests/acloca17.test b/tests/acloca17.test index ad4fc9c..3620d05 100755 --- a/tests/acloca17.test +++ b/tests/acloca17.test @@ -33,5 +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. -run_command -e 1 env WARNINGS=error $ACLOCAL -I m4 +run_command -e 1 WARNINGS=error $ACLOCAL -I m4 grep 'configure.in:4:.*UNDEFINED_MACRO' stderr diff --git a/tests/check11.test b/tests/check11.test index 6307908..d80fe17 100755 --- a/tests/check11.test +++ b/tests/check11.test @@ -42,10 +42,10 @@ $AUTOMAKE -a unset TESTS || : ./configure -run_command env TESTS=skip $MAKE -e check +run_command TESTS=skip $MAKE -e check grep '1.*passed' stdout && Exit 1 -run_command env TESTS="skip skip2" $MAKE -e check +run_command TESTS="skip skip2" $MAKE -e check grep '2.*passed' stdout && Exit 1 : diff --git a/tests/check5.test b/tests/check5.test index cb87740..78f635b 100755 --- a/tests/check5.test +++ b/tests/check5.test @@ -50,7 +50,7 @@ cp one.c two.c unset TESTS || : $MAKE check test -f ok -run_command env EXEEXT=.bin $MAKE -e 'print-tests' +run_command EXEEXT=.bin $MAKE -e 'print-tests' # No am__EXEEXT_* variable is needed. grep '_EXEEXT_[1-9]' Makefile.in && Exit 1 grep 'BEG: one.bin two.bin :END' stdout diff --git a/tests/check7.test b/tests/check7.test index 6fde486..548ef30 100755 --- a/tests/check7.test +++ b/tests/check7.test @@ -55,7 +55,7 @@ $AUTOMAKE -a ./configure $MAKE check -run_command env EXEEXT=.bin $MAKE -e print-xfail-tests +run_command EXEEXT=.bin $MAKE -e print-xfail-tests grep 'BEG: a.bin b c.bin d.bin :END' stdout $MAKE distclean diff --git a/tests/check8.test b/tests/check8.test index 2fbbeb5..ef05430 100755 --- a/tests/check8.test +++ b/tests/check8.test @@ -67,7 +67,7 @@ $AUTOMAKE -a unset TESTS || : ./configure -run_command -e FAIL -- env AM_COLOR_TESTS=always $MAKE -e check +run_command -e FAIL AM_COLOR_TESTS=always $MAKE -e check grep 'XPASS.* foo$' stdout grep '^[^X]*PASS.* sub/foo$' stdout grep '^[^X]*PASS.* bar' stdout diff --git a/tests/cond22.test b/tests/cond22.test index 11498b3..164e18f 100755 --- a/tests/cond22.test +++ b/tests/cond22.test @@ -64,5 +64,5 @@ $ACLOCAL $AUTOCONF $AUTOMAKE ./configure -run_command env OBJEXT=oo $MAKE -e echo +run_command OBJEXT=oo $MAKE -e echo $FGREP 'BEG: one.oo two.oo three.oo three2.oo :END' stdout diff --git a/tests/cond30.test b/tests/cond30.test index e2327c5..5259fe5 100755 --- a/tests/cond30.test +++ b/tests/cond30.test @@ -44,11 +44,11 @@ $AUTOCONF $AUTOMAKE ./configure -run_command env EXEEXT=.foo $MAKE -e print +run_command EXEEXT=.foo $MAKE -e print grep 'BEG: a.foo :END' stdout ./configure two=yes -run_command env EXEEXT=.foo $MAKE -e print +run_command EXEEXT=.foo $MAKE -e print grep 'BEG: b.foo :END' stdout grep 'a_SOURCES = a.c' Makefile.in diff --git a/tests/defs.in b/tests/defs.in index 44068bd..80ac1d3 100644 --- a/tests/defs.in +++ b/tests/defs.in @@ -399,10 +399,15 @@ 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). +# run_command [-e STATUS] [-m] [--] [<VAR-1>=<VAL-1> .. <VAR-n>=<VAL-n>] +# [COMMAND [ARGUMENTS..]] +# ------------------------------------------------------------------------- +# Run the given COMMAND with ARGUMENTS, and with the <VAR-i> environmental +# variables added to its environment with the corresponding <VAL-i> values. +# An empty or missing COMMAND argument is equivalent to specifying the +# `env' command. +# Cause the test to FAIL if COMMAND doesn't 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' @@ -433,8 +438,8 @@ run_command () esac shift done - case $# in - 0) echo "run_command: missing COMMAND argument" >&2; Exit 99;; + case ${1-} in + ""|*=*) run_cmd=env;; *) run_cmd=$1; shift;; esac # The use of `${1+"$@"}' might trigger a bug of some Korn shells diff --git a/tests/distdir.test b/tests/distdir.test index 12b95c9..7986416 100755 --- a/tests/distdir.test +++ b/tests/distdir.test @@ -69,7 +69,7 @@ test -d foo && Exit 1 rm -rf distdir-1.0 # Remove the dot from VERSION for the next grep. -run_command -e IGNORE env VERSION=10 MKDIR_P='echo MKDIR_P' $MAKE -e distdir +run_command -e IGNORE VERSION=10 MKDIR_P='echo MKDIR_P' $MAKE -e distdir # Make sure no `./' appear in the directory names. srcdir is `..', so # this also checks that no directory is created in the source tree. diff --git a/tests/exeext.test b/tests/exeext.test index 767ed32..c71b363 100755 --- a/tests/exeext.test +++ b/tests/exeext.test @@ -70,7 +70,7 @@ grep 'maude3__EXEEXT__OBJECTS' Makefile.in && Exit 1 ./configure -run_command env EXEEXT=.foo $MAKE -e print +run_command EXEEXT=.foo $MAKE -e print grep '1BEG: maude.foo mt.foo :END1' stdout grep '2BEG: maude.static.foo :END2' stdout @@ -79,7 +79,7 @@ grep '4BEG: rmt.foo :END4' stdout ./configure revert=yes -run_command env EXEEXT=.foo $MAKE -e print +run_command EXEEXT=.foo $MAKE -e print grep '1BEG: maude.foo :END1' stdout grep '2BEG: maude.static.foo :END2' stdout diff --git a/tests/libtool7.test b/tests/libtool7.test index 70ef249..dbe918a 100755 --- a/tests/libtool7.test +++ b/tests/libtool7.test @@ -83,16 +83,16 @@ $AUTOCONF $AUTOMAKE --add-missing --copy ./configure "--prefix=`pwd`/_inst" -run_command -m env LIBTOOLFLAGS=--silent $MAKE print +run_command -m 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 -run_command -m env LIBTOOLFLAGS=--silent $MAKE install +run_command -m LIBTOOLFLAGS=--silent $MAKE install grep 'silent.*silent.*prg' stdall grep 'silent.*silent.*libmod1' stdall -run_command -m env LIBTOOLFLAGS=--silent $MAKE uninstall +run_command -m LIBTOOLFLAGS=--silent $MAKE uninstall grep 'silent.*silent.*libmod1' stdall diff --git a/tests/libtool9.test b/tests/libtool9.test index 0a19c74..f759931 100755 --- a/tests/libtool9.test +++ b/tests/libtool9.test @@ -88,7 +88,7 @@ $AUTOCONF $AUTOMAKE --add-missing --copy ./configure -run_command -m env \ +run_command -m \ 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 diff --git a/tests/parallel-tests.test b/tests/parallel-tests.test index cc90f94..4c477b0 100755 --- a/tests/parallel-tests.test +++ b/tests/parallel-tests.test @@ -65,7 +65,7 @@ unset TESTS || : ./configure # No hard errors: all tests should be run, there should be one failure. -run_command -e FAIL env DISABLE_HARD_ERRORS=yes $MAKE -e check +run_command -e FAIL DISABLE_HARD_ERRORS=yes $MAKE -e check test `grep -c '^FAIL' stdout` -eq 1 test -f mylog.log test `grep -c '^FAIL' mylog.log` -eq 1 @@ -96,7 +96,7 @@ test `grep -c '^FAIL' mylog.log` -eq 2 # take bar.log into account, because the $(TEST_SUITE_LOG) rule # does not "see" baz.log. Hmm. $MAKE clean -run_command -e FAIL env TESTS='bar.test' $MAKE -e check +run_command -e FAIL TESTS='bar.test' $MAKE -e check test -f baz.log test -f bar.log test ! -f foo.log @@ -108,7 +108,7 @@ test -f mylog.log # Note that the previous test and this one taken together expose the timing # issue that requires the check-TESTS rule to always remove TEST_SUITE_LOG # before running the tests lazily. -run_command -e FAIL env RECHECK_LOGS= $MAKE -e check +run_command -e FAIL RECHECK_LOGS= $MAKE -e check cat stdout test -f foo.log grep foo.test stdout @@ -118,32 +118,32 @@ grep '2.*tests.*failed' stdout # Now, explicitly retry with all test logs already updated, and ensure # that the summary is still displayed. -run_command -e FAIL env RECHECK_LOGS= $MAKE -e check +run_command -e FAIL RECHECK_LOGS= $MAKE -e check grep foo.test stdout && Exit 1 grep bar.test stdout && Exit 1 grep baz.test stdout && Exit 1 grep '2.*tests.*failed' stdout # Lazily rerunning only foo should only rerun this one test. -run_command -e FAIL env RECHECK_LOGS=foo.log $MAKE -e check +run_command -e FAIL RECHECK_LOGS=foo.log $MAKE -e check grep foo.test stdout grep bar.test stdout && Exit 1 grep baz.test stdout && Exit 1 grep '2.*tests.*failed' stdout # Test VERBOSE. -run_command -e FAIL env VERBOSE=yes $MAKE -e check +run_command -e FAIL VERBOSE=yes $MAKE -e check grep 'this is.*bar.test' stdout grep 'this is.*baz.test' stdout $MAKE clean -run_command -e FAIL env TEST_LOGS=baz.log $MAKE -e check +run_command -e FAIL TEST_LOGS=baz.log $MAKE -e check grep foo.test stdout && Exit 1 grep bar.test stdout && Exit 1 grep baz.test stdout $MAKE clean -run_command -e FAIL env TESTS=baz.test $MAKE -e check +run_command -e FAIL TESTS=baz.test $MAKE -e check grep foo.test stdout && Exit 1 grep bar.test stdout && Exit 1 grep baz.test stdout diff --git a/tests/parallel-tests2.test b/tests/parallel-tests2.test index 8d66313..a49d39c 100755 --- a/tests/parallel-tests2.test +++ b/tests/parallel-tests2.test @@ -64,12 +64,12 @@ test -f mylog.html # Always create the HTML output, even if there were no failures. rm -f mylog.html -run_command env TESTS=foo.test $MAKE -e check-html +run_command TESTS=foo.test $MAKE -e check-html test -f mylog.html # Create HTML output also with recheck-html rm -f mylog.html -run_command env TESTS=foo.test $MAKE -e recheck-html +run_command TESTS=foo.test $MAKE -e recheck-html test -f mylog.html # check-html and recheck-html should cause check_SCRIPTS to be created, diff --git a/tests/subst2.test b/tests/subst2.test index 3ca49d7..74bba8b 100755 --- a/tests/subst2.test +++ b/tests/subst2.test @@ -42,9 +42,9 @@ $ACLOCAL $AUTOCONF $AUTOMAKE ./configure -run_command env EXEEXT=.bin $MAKE print-programs +run_command EXEEXT=.bin $MAKE print-programs grep 'BEG: x.bin :END' stdout -run_command env EXEEXT=.bin am__empty=X $MAKE -e print-programs +run_command EXEEXT=.bin am__empty=X $MAKE -e print-programs grep 'BEG: x.bin X :END' stdout # Test for another bug, where EXTRA_PROGRAMS was removed because it was empty. diff --git a/tests/suffix11.test b/tests/suffix11.test index 417e0f1..21591ca 100755 --- a/tests/suffix11.test +++ b/tests/suffix11.test @@ -52,7 +52,7 @@ grep 'Inference rules can have only one target before the colon' stderr # But this should work anyway. $AUTOMAKE -a -Wno-portability ./configure -run_command env OBJEXT=foo $MAKE -e print +run_command OBJEXT=foo $MAKE -e print grep 'BEGIN: foo.foo :END' stdout grep 'BEGIN: bar.foo :END' stdout grep 'BEGIN: baz1.foo baz2.foo :END' stdout diff --git a/tests/suffix12.test b/tests/suffix12.test index 84d089e..6abc4f9 100755 --- a/tests/suffix12.test +++ b/tests/suffix12.test @@ -47,5 +47,5 @@ $ACLOCAL $AUTOCONF $AUTOMAKE -a ./configure -run_command env OBJEXT=OBJ $MAKE -e print +run_command OBJEXT=OBJ $MAKE -e print grep 'BEGIN: foo.OBJ sub/bar.OBJ :END' stdout diff --git a/tests/suffix8.test b/tests/suffix8.test index 52fabf2..6fd9d05 100755 --- a/tests/suffix8.test +++ b/tests/suffix8.test @@ -69,7 +69,7 @@ $ACLOCAL $AUTOCONF $AUTOMAKE -a ./configure -run_command env OBJEXT=foo $MAKE -e print +run_command OBJEXT=foo $MAKE -e print grep 'BEGIN: foo.foo :END' stdout grep 'BEGIN: bar.lo :END' stdout $MAKE test -- 1.6.5