Unsetting it in the shell test driver could work,
Yep. That's what I had in mind, sorry I wasn't clear.
to the line that actually executes the Perl script
The t/parallel-tests-log-compiler-example.sh test (copied below) is
testing Automake tests, so the script is not invoked directly, but by
Automake's oh-so-complicated test infrastructure. So I just
unset PERL5OPT in that .sh script. Admittedly that means Perl warnings
won't be fatal elsehere in the test invocation, but IMHO we can live
with that.
I could have unset PERL5OPT a few line farther down, but I thought it
was clearest to put the warning stuff together.
Does the test rely on perl emitting a warning?
As things stand, yes. It greps the test .log for it.
Thanks for all,
Karl
#! /bin/sh
# [GPL omitted]
#
# Test the example of usage of generic and extension-specific
# LOG_COMPILER and LOG_FLAGS given in the manual.
required=python
. test-init.sh
cat >> configure.ac <<END
AC_SUBST([PERL], ['$PERL'])
AM_PATH_PYTHON
AC_OUTPUT
END
cat > Makefile.am << 'END'
TESTS = foo.pl bar.py baz
TEST_EXTENSIONS = .pl .py
PL_LOG_COMPILER = $(PERL)
AM_PL_LOG_FLAGS = -w
PY_LOG_COMPILER = $(PYTHON)
AM_PY_LOG_FLAGS = -v
LOG_COMPILER = ./wrapper-script
AM_LOG_FLAGS = -d
END
# intentionally reversed += operator to provoke warning; thus,
# explicitly unset PERL5OPT so that PERL5OPT=-Mwarnings=FATAL,all
# in the environment won't cause a fatal error. See ../HACKING.
unset PERL5OPT
echo 'my $a =+ 2; exit (0);' > foo.pl
echo 'import sys; sys.exit(0);' > bar.py
: > baz
cat > wrapper-script <<'END'
#!/bin/sh
echo "wrapper args: $*"
END
chmod a+x wrapper-script
$ACLOCAL
$AUTOCONF
$AUTOMAKE -a
./configure
st=0
$MAKE check || st=$?
cat foo.log
cat bar.log
cat baz.log
test $st -eq 0 || exit $st
# Check that the wrappers have been run with the expected flags.
grep '[rR]eversed.*+=.*operator.*foo\.pl' foo.log
grep '^# *[cC]lear.*sys\.argv' bar.log
grep '^wrapper args:.* -d .*baz' baz.log
: