[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 31/32] runtest: sanitize test environment
From: |
Stefano Lattarini |
Subject: |
[PATCH 31/32] runtest: sanitize test environment |
Date: |
Thu, 26 Jul 2012 14:04:57 +0200 |
* runtest.in: Here, similarly to what is done by AM_TESTS_ENVIRONMENT
in Makefile.am, unset variables that should be under the complete control
of the test framework, and that could create havoc if inherited from the
environment. This remove the need to check against possible environment
"pollution" ...
* t/ax/test-defs.in: ... in here.
* Makefile.am (AM_TESTS_ENVIRONMENT): Add a comment about the need of
synchronization with 'runtest.in'.
* t/self-check-env-sanitize.tap: Remove as obsolete.
* t/list-of-tests.mk: Adjust.
Signed-off-by: Stefano Lattarini <address@hidden>
---
Makefile.am | 1 +
runtest.in | 17 +++++++++++++
t/ax/test-defs.in | 21 ----------------
t/list-of-tests.mk | 1 -
t/self-check-env-sanitize.tap | 56 -------------------------------------------
5 files changed, 18 insertions(+), 78 deletions(-)
delete mode 100755 t/self-check-env-sanitize.tap
diff --git a/Makefile.am b/Makefile.am
index 61a0443..97a5fcc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -334,6 +334,7 @@ TESTS = ## Will be updated later.
# Some testsuite-influential variables should be overridable from the
# test scripts, but not from the environment.
+# Keep this in sync with the similar list in 'runtest.in'.
AM_TESTS_ENVIRONMENT = \
for v in \
required \
diff --git a/runtest.in b/runtest.in
index c818840..c2c5d1f 100644
--- a/runtest.in
+++ b/runtest.in
@@ -40,6 +40,23 @@ export PATH
# define this, so we better do the same.
export srcdir
+# Some testsuite-influential variables should be overridable from the
+# test scripts, but not from the environment.
+# Keep this in sync with the 'Makefile.am:AM_TESTS_ENVIRONMENT'.
+for v in \
+ required \
+ am_test_protocol \
+ am_serial_tests \
+ am_test_prefer_config_shell \
+ am_original_AUTOMAKE \
+ am_original_ACLOCAL \
+ am_test_lib_sourced \
+ test_lib_sourced \
+; do
+ eval "$v= && unset $v" || exit 1
+done
+unset v
+
error () { echo "$0: $*" >&2; exit 255; }
# Some shell flags should be passed over to the test scripts.
diff --git a/t/ax/test-defs.in b/t/ax/test-defs.in
index d0063cf..56b45e1 100644
--- a/t/ax/test-defs.in
+++ b/t/ax/test-defs.in
@@ -22,27 +22,6 @@
# - Multiple inclusions of this file should be idempotent.
# - This code has to be 'set -e' clean.
-# Check that the environment is properly sanitized.
-# Having variables exported to the empty string is OK, since our code
-# treats such variables as if they were unset.
-for var in \
- required \
- am_test_protocol \
- am_serial_tests \
- am_create_testdir \
- am_tap_implementation \
- am_test_prefer_config_shell \
- am_original_AUTOMAKE \
- am_original_ACLOCAL \
-; do
- if eval "test x\"\$$var\" != x" && env | grep "^$var=" >/dev/null; then
- echo "$me: variable '$var' is set in the environment:" \
- "this is unsafe" >&2
- exit 99
- fi
-done
-unset var
-
# See whether the current test script is expected to use TAP or not.
# Use a sensible default, while allowing the scripts to override this
# check.
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index 10f1e94..d193adb 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -954,7 +954,6 @@ t/repeated-options.sh \
t/rulepat.sh \
t/self-check-configure-help.sh \
t/self-check-dir.tap \
-t/self-check-env-sanitize.tap \
t/self-check-exit.tap \
t/self-check-explicit-skips.sh \
t/self-check-is_newest.tap \
diff --git a/t/self-check-env-sanitize.tap b/t/self-check-env-sanitize.tap
deleted file mode 100755
index 4896ce2..0000000
--- a/t/self-check-env-sanitize.tap
+++ /dev/null
@@ -1,56 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2011-2012 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# Sanity check for the automake testsuite.
-# Make sure that the testsuite initialization code complains when
-# some testsuite-influential variables are set in the environment.
-
-am_create_testdir=no
-. ./defs || exit 1
-
-set -x
-exec 5>&1
-
-plan_ 16 # Two times the number of variable names in $vars.
-
-vars='
- required
- am_serial_tests
- am_test_protocol
- am_create_testdir
- am_tap_implementation
- am_test_prefer_config_shell
- am_original_AUTOMAKE
- am_original_ACLOCAL
-'
-
-do_run ()
-{
- env "$1=foo" $AM_TEST_RUNNER_SHELL -c '. ./defs' foo.test
-}
-
-do_grep ()
-{
- env "$1=foo" $AM_TEST_RUNNER_SHELL -c '. ./defs' foo.test 2>&1 1>&5 \
- | grep "foo\.test:.* variable '$1'.* in the environment.*unsafe"
-}
-
-for var in $vars; do
- command_ok_ "$var [err status]" not do_run $var
- command_ok_ "$var [err message]" do_grep $var
-done
-
-:
--
1.7.12.rc0
- [PATCH 21/32] test setup: merge definitions of function for simple tests, (continued)
- [PATCH 21/32] test setup: merge definitions of function for simple tests, Stefano Lattarini, 2012/07/26
- [PATCH 23/32] tests: split test libs into "generic" and "automake-specific", Stefano Lattarini, 2012/07/26
- [PATCH 27/32] configure: testsuite shell can return early from "dot-sourced" files, Stefano Lattarini, 2012/07/26
- [PATCH 25/32] tests: source test defs in the generic test lib, Stefano Lattarini, 2012/07/26
- [PATCH 22/32] test setup: move actual calling of testsuite setup in ./defs, Stefano Lattarini, 2012/07/26
- [PATCH 26/32] tests: move sanitization and "Bournification" in the generic test lib, Stefano Lattarini, 2012/07/26
- [PATCH 24/32] test defs: no need to re-add $srcdir/t/ax to $PATH, Stefano Lattarini, 2012/07/26
- [PATCH 20/32] test init: refactor: new function 'am_test_setup', Stefano Lattarini, 2012/07/26
- [PATCH 28/32] tests: protect test libs against multiple inclusion, Stefano Lattarini, 2012/07/26
- [PATCH 29/32] tests: "am_using_tap=yes" -> "am_test_protocol=tap", Stefano Lattarini, 2012/07/26
- [PATCH 31/32] runtest: sanitize test environment,
Stefano Lattarini <=
- [PATCH 30/32] tests: remove an obsolescent self test, Stefano Lattarini, 2012/07/26
- [PATCH 32/32] tests: never source test-defs.sh directly, source test-lib.sh instead, Stefano Lattarini, 2012/07/26
- [PATCH 33/32] maintcheck: fixup list of files in $(xdefs), Stefano Lattarini, 2012/07/26
- Re: [PATCH 00/32] {maint} Several testsuite refactorings, Stefano Lattarini, 2012/07/26