mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-04-20 02:36:16 +02:00
tests: detect missing perl at configure runtime
* configure.ac (AM_CONDITIONAL): Set the conditional 'HAVE_PERL' to true if the configure-time checks (as run by gl_PERL) have been able to find a working perl. * tests/no-perl: New script, report a diagnostic about "missing perl" and exit with status 77. * tests/Makefile.am (EXTRA_DIST): Distribute it. (TESTSUITE_PERL): New, define to '$(PERL)' if a perl interpreter has been found at configure time (i.e., if the 'HAVE_PERL' automake conditional is true), and to '$(srcdir)/no-perl' otherwise. (LOG_COMPILER): Use $(TESTSUITE_PERL) instead of $(PERL). (XPL_LOG_COMPILER): Likewise. * tests/shell-or-perl: Simplify: no need to actually check whether perl is working.
This commit is contained in:
committed by
Jim Meyering
parent
e44178c590
commit
00f5ba15dd
@@ -60,6 +60,13 @@ gl_EARLY
|
||||
gl_INIT
|
||||
coreutils_MACROS
|
||||
|
||||
# The test suite needs to know if we have a working perl.
|
||||
# FIXME: this is suboptimal. Ideally, we would be able to call gl_PERL
|
||||
# with an ACTION-IF-NOT-FOUND argument ...
|
||||
cu_have_perl=yes
|
||||
case $PERL in *"/missing ") cu_have_perl=no;; esac
|
||||
AM_CONDITIONAL([HAVE_PERL], [test $cu_have_perl = yes])
|
||||
|
||||
AC_ARG_ENABLE([gcc-warnings],
|
||||
[AS_HELP_STRING([--enable-gcc-warnings],
|
||||
[turn on lots of GCC warnings (for developers)])],
|
||||
|
||||
@@ -47,6 +47,12 @@ check_DATA = .built-programs
|
||||
|
||||
TEST_EXTENSIONS = .xpl
|
||||
|
||||
if HAVE_PERL
|
||||
TESTSUITE_PERL = $(PERL)
|
||||
else
|
||||
TESTSUITE_PERL = $(SHELL) $(srcdir)/no-perl
|
||||
endif
|
||||
|
||||
# '$f' is set by the Automake-generated test harness to the path of the
|
||||
# current test script stripped of VPATH components, and is used by the
|
||||
# shell-or-perl script to determine the name of the temporary files to be
|
||||
@@ -55,11 +61,11 @@ TEST_EXTENSIONS = .xpl
|
||||
LOG_COMPILER = \
|
||||
$(SHELL) $(srcdir)/shell-or-perl \
|
||||
--test-name "$$f" --srcdir '$(srcdir)' \
|
||||
--shell '$(SHELL)' --perl '$(PERL)' --
|
||||
--shell '$(SHELL)' --perl '$(TESTSUITE_PERL)' --
|
||||
|
||||
# Perl scripts that must be run in tainted mode.
|
||||
XPL_LOG_COMPILER = \
|
||||
$(PERL) -wT -I$(srcdir) -MCoreutils -MCuSkip -M"CuTmpdir qw($$f)"
|
||||
$(TESTSUITE_PERL) -wT -I$(srcdir) -MCoreutils -MCuSkip -M"CuTmpdir qw($$f)"
|
||||
|
||||
# Note that the first lines are statements. They ensure that environment
|
||||
# variables that can perturb tests are unset or set to expected values.
|
||||
@@ -118,6 +124,7 @@ EXTRA_DIST = \
|
||||
init.cfg \
|
||||
init.sh \
|
||||
lang-default \
|
||||
no-perl \
|
||||
other-fs-tmpdir \
|
||||
sample-test \
|
||||
shell-or-perl \
|
||||
|
||||
6
tests/no-perl
Normal file
6
tests/no-perl
Normal file
@@ -0,0 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Perl is not available, the test should be considered skipped.
|
||||
# FD 9 should have been opened by the test suite harness, pointing
|
||||
# to the original stderr (usually, the user's terminal).
|
||||
echo "test skipped: no usable version of Perl found" >&9
|
||||
exit 77
|
||||
@@ -94,15 +94,8 @@ read shebang_line < "$test_script" \
|
||||
case $shebang_line in
|
||||
'#!/usr/bin/perl'*)
|
||||
# The test is a perl script.
|
||||
if $cu_PERL -e 'use warnings' > /dev/null 2>&1; then
|
||||
exec $cu_PERL -w -I"$srcdir" -MCoreutils -MCuSkip \
|
||||
-M"CuTmpdir qw($test_name)" \
|
||||
-- "$test_script" ${1+"$@"}
|
||||
else
|
||||
# Perl is not available, skip the test.
|
||||
echo "$test_name: skip: no usable version of Perl found"
|
||||
exit 77
|
||||
fi
|
||||
exec $cu_PERL -w -I"$srcdir" -MCoreutils -MCuSkip \
|
||||
-M"CuTmpdir qw($test_name)" -- "$test_script" ${1+"$@"}
|
||||
;;
|
||||
*)
|
||||
# Assume the test is a shell script.
|
||||
|
||||
Reference in New Issue
Block a user