From 51f59fc244ef6cf13a2784a0ea82ad9ba80a57b4 Mon Sep 17 00:00:00 2001 From: Stefano Lattarini Date: Sat, 18 Jun 2011 14:53:08 +0200 Subject: [PATCH] tests: more checks on portable fd redirection in TESTS_ENVIRONMENT * tests/tests-environment-fd-redirect.test: Extend by also using a perl script among the tests. Run the test shell script with the `errexit' flag active. Export `VERBOSE' to yes when running "make check", to give more debugging information in case of failures. Look for a Korn Shell also in `/usr/bin', not on only in `/bin'. --- ChangeLog | 10 ++++++++ tests/tests-environment-fd-redirect.test | 41 +++++++++++++++++++++++--------- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index e482cbd..5e97dfd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2011-06-18 Stefano Lattarini + + tests: more checks on portable fd redirection in TESTS_ENVIRONMENT + * tests/tests-environment-fd-redirect.test: Extend by also using + a perl script among the tests. Run the test shell script with + the `errexit' flag active. Export `VERBOSE' to yes when running + "make check", to give more debugging information in case of + failures. Look for a Korn Shell also in `/usr/bin', not on only + in `/bin'. + 2011-06-14 Stefano Lattarini tests: check portable fd redirection in TESTS_ENVIRONMENT diff --git a/tests/tests-environment-fd-redirect.test b/tests/tests-environment-fd-redirect.test index f9e6d2b..b2b5ab4 100755 --- a/tests/tests-environment-fd-redirect.test +++ b/tests/tests-environment-fd-redirect.test @@ -33,41 +33,60 @@ cat >> configure.in << 'END' AC_OUTPUT END +# Use both a shell script and a perl script as tests, +# for better coverage. + cat >foo.test <<'END' #! /bin/sh +set -e echo " " $0: foofoofoo >&8 echo " " $0: barbarbar >&9 END -chmod a+x foo.test + +echo "#! $PERL -w" > bar.test +cat >>bar.test <<'END' +use warnings FATAL => 'all'; +use strict; +open(FD8, ">&=8") or die "$!"; +open(FD9, ">&=9") or die "$!"; +print FD8 " $0: 8888\n"; +print FD9 " $0: 9999\n"; +END + +chmod a+x foo.test bar.test $ACLOCAL $AUTOCONF -# /bin/ksh seems more vulnerable to the issue highlighted in coreutils +# Korn Shells seem more vulnerable to the issue highlighted in coreutils # bug#8846 than other shells are. In particular, the default Korn Shell # on Debian GNU/Linux is affected by the issue. So let's try to run our -# test with /bin/ksh too, if that's available. -if test "$SHELL" != /bin/ksh && test -f /bin/ksh; then - bin_ksh=/bin/ksh -else - bin_ksh=: -fi +# test with a system Korn Shell too, if that's available. +bin_ksh=: +case $SHELL in + ksh|*/ksh) ;; + *) for d in /bin /usr/bin; do + test -f $d/ksh && { bin_ksh=$d/ksh; break; } + done;; +esac for sh in "$SHELL" "$bin_ksh"; do test "$sh" = : && continue for pfx in AM_ ''; do unindent > Makefile.am <&1 9>&8 END $AUTOMAKE -a CONFIG_SHELL="$sh" $sh ./configure CONFIG_SHELL="$sh" - $MAKE check >stdout || { cat stdout; Exit 1; } + VERBOSE=y $MAKE check >stdout || { cat stdout; Exit 1; } cat stdout grep '[ /]foo\.test: foofoofoo$' stdout grep '[ /]foo\.test: barbarbar$' stdout - $EGREP '(foofoofoo|barbarbar)' foo.log && Exit 1 + grep '[ /]bar\.test: 8888$' stdout + grep '[ /]bar\.test: 9999$' stdout + $EGREP '(foofoofoo|barbarbar|8888|9999)' foo.log && Exit 1 : # For shells with buggy 'set -e'. done done -- 2.7.4