tests: accommodate HP-UX and ksh-derived shells
commit6b687452d8c08a1b00f53402caf651229cdb0c51
authorJim Meyering <meyering@redhat.com>
Tue, 14 Jun 2011 07:59:14 +0000 (14 09:59 +0200)
committerJim Meyering <meyering@redhat.com>
Tue, 14 Jun 2011 09:05:05 +0000 (14 11:05 +0200)
tree9cb5b35b0216c2d3c75c980216832bb4b0450832
parentef6e57b24b51f247119a83be6c81c6a8a30b87a4
tests: accommodate HP-UX and ksh-derived shells

Running "make check" normally prints a diagnostic to the outermost
stderr (usually a tty) to explain why a test is skipped.  It did this
by redirecting FD 9 to stderr (via "exec 9>&2") before invoking the
shell script.  Shell scripts write skip-explanation to FD 9 via
init.sh's skip_ function.  However, with ksh and HP-UX's /bin/sh,
the effects of "exec 9>&2" are canceled upon fork-and-exec, so we
would get a "Bad file number" diagnostic and no skip explanation on
those systems.
* tests/check.mk (TESTS_ENVIRONMENT): Redirect more portably, via
"$(SHELL) 9>&2", rather than the prior "exec 9>&2; $(SHELL) ..."
Actually, we use "shell_or_perl_ 9>&2", to make this effective
also for the perl-based tests.
* tests/init.sh (stderr_fileno_): Update the advice in comments.
See http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/22488
for lots of discussion.  Stefano Lattarini suggested the solution
of putting "9>&2" after the command.  Reported by Bruno Haible.
tests/check.mk
tests/init.sh