On Thursday 16 June 2011, Stefano Lattarini wrote: > On Tuesday 14 June 2011, Stefano Lattarini wrote: > > [adding automake-patches on CC:] > > > > Reference to original thread(s), mostly duplicated: > > <http://lists.gnu.org/archive/html/bug-coreutils/2011-06/msg00051.html> > > <http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00002.html> > > > > Reference to last relevant message there: > > <http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00018.html> > > <http://lists.gnu.org/archive/html/bug-coreutils/2011-06/msg00082.html> > > > > On Tuesday 14 June 2011, Eric Blake wrote: > > > On 06/13/2011 04:29 PM, Stefano Lattarini wrote: > > > > If this work, then using a bare `>&2' *at the end of TESTS_ENVIRONMENT* > > > > and > > > > > > You meant a bare `9>&2', > > > > > Yes, sorry. > > > > > but yes that does seem to be workable for what we want! > > > > > > > *without a following semicolon* might give a portable workaround, as if > > > > I'm > > > > not mistaken POSIX mandates that redirections can be specified anywere > > > > on > > > > the command line, and are to be evaluated from left to right. > > > > > > Yes, all shells support these as equivalent: > > > > > > 9>&2 sh k > > > sh k 9>&2 > > > > > > > > > > > UPDATE: Yes, it seems to work. I'll add a testcase to the 'maint' > > > > branch in > > > > case you and Jim decide to go with this solution (and you can confirm > > > > that it > > > > really works). > > > > > > Cool! Definitely worth documenting in the automake manual, as owner of > > > TESTS_ENVIRONMENT and as a client of init.sh functionality, as well as > > > your proposed automake testcase addition to ensure we don't break it. > > > > > > > I'll then push the attached patch to automake master soonish (by tomorrow > > or so) if there is no objection by then. > > > I've pushed the patch now. > > Regards, > Stefano > I've applied the attached follow-up too, to increase coverage to situations where not all the test scripts are shell scripts.
Regards, Stefano
From 964b785be1682bbd465feca4aa28d06f2909d4e6 Mon Sep 17 00:00:00 2001 Message-Id: <964b785be1682bbd465feca4aa28d06f2909d4e6.1308401610.git.stefano.lattar...@gmail.com> From: Stefano Lattarini <stefano.lattar...@gmail.com> 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 | 40 +++++++++++++++++++++-------- 2 files changed, 39 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 <stefano.lattar...@gmail.com> + + 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 <stefano.lattar...@gmail.com> 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..6c87cb6 100755 --- a/tests/tests-environment-fd-redirect.test +++ b/tests/tests-environment-fd-redirect.test @@ -33,41 +33,59 @@ 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 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 <<END - TESTS = foo.test + TESTS = foo.test bar.test ## No trailing semicolon here, *deliberately*. ${pfx}TESTS_ENVIRONMENT = 8>&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 -- 1.7.2.3