2011-04-18 Stefano Lattarini <stefano.lattarini@gmail.com>
+ tests: don't allow `$me' to be overridden from the environment
+ * tests/defs.in: Sanity check: abort if $me is in the environment.
+ * tests/self-check-me-in-env.test: New test.
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Unset variable `me'.
+ (TESTS): Update.
+ Suggestion by Ralf Wildenhues.
+
++2011-04-18 Stefano Lattarini <stefano.lattarini@gmail.com>
++
+ check: rename AM_TESTS_SETUP -> AM_TESTS_ENVIRONMENT
+ The AM_TESTS_SETUP naming was not a good one after all. It may
+ be technically more correct than AM_TESTS_ENVIRONMENT, but the
+ latter is a better one simply because it is easier to remember,
+ and even if you've never heard of it and only know the semantics
+ of TESTS_ENVIRONMENT, you can have a straightforward way to
+ figure out how AM_TESTS_ENVIRONMENT would work.
+ * tests/check.am (am__check_pre): Update.
+ * doc/automake.in (Simple Tests using parallel-tests): Update.
+ * tests/parallel-tests-am_tests_setup.test: Renamed ...
+ * tests/parallel-tests-am_tests_environment.test: ... to this,
+ and updated.
+ * tests/Makefile.am (TESTS): Update.
+ Suggestion and motivation by Ralf Wildenhues.
+
2011-04-17 Stefano Lattarini <stefano.lattarini@gmail.com>
test defs: allow overriding of `$me'
include $(srcdir)/parallel-tests.am
$(srcdir)/parallel-tests.am: gen-parallel-tests Makefile.am
- (cd $(srcdir) && $(SHELL) ./gen-parallel-tests) >$@
+ $(AM_V_GEN)($(am__cd) $(srcdir) && $(SHELL) ./gen-parallel-tests) >$@
+
+$(parallel_tests): Makefile.am
+ $(AM_V_at)rm -f $@ $@-t
+ $(AM_V_GEN)input=`echo $@ | sed 's,.*/,,; s,-p.test$$,.test,'`; \
+ { echo '#!/bin/sh'; \
+ echo '# DO NOT EDIT! GENERATED AUTOMATICALLY!'; \
+ echo; \
+ echo '# Ensure proper definition of $$testsrcdir.'; \
+ echo '. ./defs-static || exit 99'; \
+ echo 'test -n "$$testsrcdir" || exit 99 # sanity check'; \
+ echo; \
+ echo "# Run the test with Automake's parallel-tests driver enabled."; \
+ echo 'parallel_tests=yes'; \
+ echo "# In the spirit of VPATH, we prefer a test in the build tree"; \
+ echo "# over one in the source tree."; \
+ echo "if test -f \"./$$input\"; then"; \
+ echo " . \"./$$input\""; \
+ echo 'else'; \
+ echo " . \"\$$testsrcdir/$$input\""; \
+ echo 'fi'; \
+ } > $@-t
+ $(AM_V_at)chmod a+rx $@-t && mv -f $@-t $@
+
+MAINTAINERCLEANFILES += $(parallel_tests)
+EXTRA_DIST += gen-parallel-tests
+
+
+include $(srcdir)/instspc-tests.am
-$(parallel_tests): $(parallel_tests:-p.test=.test) Makefile.am
- input=`echo $@ | sed 's,.*/,,; s,-p.test$$,.test,'`; \
- sed 's|^\. \./defs.*|parallel_tests=yes; &|' \
- < $(srcdir)/$$input >$@
- chmod a+rx $@
+$(srcdir)/instspc-tests.am: instspc-tests.sh Makefile.am
+ $(AM_V_GEN)($(am__cd) $(srcdir) \
+ && $(SHELL) ./instspc-tests.sh --generate-makefile) >$@
+
+$(instspc_tests): Makefile.am
+ $(AM_V_at)rm -f $@ $@-t
+ $(AM_V_GEN) :; \
+ base=`expr 'x/$@' : 'x.*/instspc-\(.*\)\.test$$'`; \
+ name=`expr x"$$base" : x'\(.*\)-'`; \
+ action=`expr x"$$base" : x'.*-\(.*\)'`; \
+ { \
+ echo '#!/bin/sh'; \
+ echo '# DO NOT EDIT! GENERATED AUTOMATICALLY!'; \
+ echo; \
+ echo '# Ensure proper definition of $$testsrcdir.'; \
+ echo '. ./defs-static || exit 99'; \
+ echo 'test -n "$$testsrcdir" || exit 99 # sanity check'; \
+ echo; \
+ echo "instspc_test_name='$$name'"; \
+ echo "instspc_action='test-$$action'"; \
+ echo ". \$$testsrcdir/instspc-tests.sh"; \
+ } > $@-t
+ $(AM_V_at)chmod a+rx $@-t && mv -f $@-t $@
+
+# All instspc-*.test tests work by sourcing the `instspc-tests.sh'
+# script. Also, they all use shared data generated by the helper
+# test `instspc-data.test', for reasons of speed.
+instspc-data.log: instspc-tests.sh
+$(instspc_tests:.test=.log): instspc-tests.sh instspc-data.log
+
+MAINTAINERCLEANFILES += $(instspc_tests)
+EXTRA_DIST += instspc-tests.sh
+XFAIL_TESTS += $(instspc_xfail_tests)
-MAINTAINERCLEANFILES = $(parallel_tests)
+ # The testsuite variable `$me' should be overridable from the
+ # test scripts, but not from the environment.
+ TESTS_ENVIRONMENT = test x"$$me" = x || unset me;
+
TESTS = \
-self-check-me-in-env.test \
-aclibobj.test \
aclocal.test \
aclocal3.test \
aclocal4.test \
req.test \
reqd.test \
reqd2.test \
+repeated-options.test \
rulepat.test \
+self-check-cleanup.test \
+self-check-dir.test \
+self-check-exit.test \
+self-check-is_newest.test \
+self-check-me.test \
++self-check-me-in-env.test \
+self-check-sanity.test \
+self-check-unindent.test \
sanity.test \
scripts.test \
seenc.test \
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-XFAIL_TESTS = \
-all.test \
-auxdir2.test \
-cond17.test \
-gcj6.test \
-pr8365-remake-timing.test \
-yacc-dist-nobuild-subdir.test \
-txinfo5.test
-
-parallel_tests = \
-check-exported-srcdir-p.test \
-check-tests-in-builddir-p.test \
-check-tests_environment-p.test \
-check-p.test \
-check10-p.test \
-check11-p.test \
-check2-p.test \
-check3-p.test \
-check4-p.test \
-check5-p.test \
-check6-p.test \
-check7-p.test \
-check8-p.test \
-check9-p.test \
-color-p.test \
-color2-p.test \
-comment9-p.test \
-dejagnu-p.test \
-exeext4-p.test \
-maken3-p.test \
-maken4-p.test \
-pr401-p.test \
-pr401b-p.test \
-pr401c-p.test
-
-MAINTAINERCLEANFILES = $(parallel_tests)
+MAINTAINERCLEANFILES = $(parallel_tests) $(instspc_tests)
+EXTRA_DIST = ChangeLog-old gen-parallel-tests instspc-tests.sh \
+ $(TESTS)
+XFAIL_TESTS = all.test auxdir2.test cond17.test gcj6.test \
+ override-conditional-2.test pr8365-remake-timing.test \
+ yacc-dist-nobuild-subdir.test txinfo5.test \
+ $(instspc_xfail_tests)
+parallel_tests = backcompat5-p.test check-exported-srcdir-p.test \
+ check-tests-in-builddir-p.test check-tests_environment-p.test \
+ check-p.test check10-p.test check11-p.test check12-p.test \
+ check2-p.test check3-p.test check4-p.test check5-p.test \
+ check6-p.test check7-p.test check8-p.test check9-p.test \
+ color-p.test color2-p.test comment9-p.test dejagnu-p.test \
+ exeext4-p.test maken3-p.test maken4-p.test \
+ posixsubst-tests-p.test pr401-p.test pr401b-p.test \
+ pr401c-p.test
+instspc_tests = instspc-squote-build.test instspc-squote-install.test \
+ instspc-dquote-build.test instspc-dquote-install.test \
+ instspc-bquote-build.test instspc-bquote-install.test \
+ instspc-sharp-build.test instspc-sharp-install.test \
+ instspc-dollar-build.test instspc-dollar-install.test \
+ instspc-bang-build.test instspc-bang-install.test \
+ instspc-bslash-build.test instspc-bslash-install.test \
+ instspc-ampersand-build.test instspc-ampersand-install.test \
+ instspc-percent-build.test instspc-percent-install.test \
+ instspc-leftpar-build.test instspc-leftpar-install.test \
+ instspc-rightpar-build.test instspc-rightpar-install.test \
+ instspc-pipe-build.test instspc-pipe-install.test \
+ instspc-caret-build.test instspc-caret-install.test \
+ instspc-tilde-build.test instspc-tilde-install.test \
+ instspc-qmark-build.test instspc-qmark-install.test \
+ instspc-star-build.test instspc-star-install.test \
+ instspc-plus-build.test instspc-plus-install.test \
+ instspc-minus-build.test instspc-minus-install.test \
+ instspc-comma-build.test instspc-comma-install.test \
+ instspc-colon-build.test instspc-colon-install.test \
+ instspc-semicol-build.test instspc-semicol-install.test \
+ instspc-equal-build.test instspc-equal-install.test \
+ instspc-less-build.test instspc-less-install.test \
+ instspc-more-build.test instspc-more-install.test \
+ instspc-at-build.test instspc-at-install.test \
+ instspc-lqbrack-build.test instspc-lqbrack-install.test \
+ instspc-rqbrack-build.test instspc-rqbrack-install.test \
+ instspc-lcbrack-build.test instspc-lcbrack-install.test \
+ instspc-rcbrack-build.test instspc-rcbrack-install.test \
+ instspc-space-build.test instspc-space-install.test \
+ instspc-tab-build.test instspc-tab-install.test \
+ instspc-linefeed-build.test instspc-linefeed-install.test \
+ instspc-backspace-build.test instspc-backspace-install.test \
+ instspc-formfeed-build.test instspc-formfeed-install.test \
+ instspc-carriageret-build.test \
+ instspc-carriageret-install.test \
+ instspc-quadrigraph0-build.test \
+ instspc-quadrigraph0-install.test \
+ instspc-quadrigraph1-build.test \
+ instspc-quadrigraph1-install.test \
+ instspc-quadrigraph2-build.test \
+ instspc-quadrigraph2-install.test \
+ instspc-quadrigraph3-build.test \
+ instspc-quadrigraph3-install.test \
+ instspc-quadrigraph4-build.test \
+ instspc-quadrigraph4-install.test instspc-a_b-build.test \
+ instspc-a_b-install.test instspc-a__b-build.test \
+ instspc-a__b-install.test instspc-a_lf_b-build.test \
+ instspc-a_lf_b-install.test instspc-dotdotdot-build.test \
+ instspc-dotdotdot-install.test instspc-dosdrive-build.test \
+ instspc-dosdrive-install.test instspc-miscglob1-build.test \
+ instspc-miscglob1-install.test instspc-miscglob2-build.test \
+ instspc-miscglob2-install.test
+instspc_xfail_tests = instspc-squote-build.test \
+ instspc-dquote-build.test instspc-bquote-build.test \
+ instspc-sharp-build.test instspc-dollar-build.test \
+ instspc-bslash-build.test instspc-ampersand-build.test \
+ instspc-linefeed-build.test instspc-quadrigraph0-build.test \
+ instspc-a_lf_b-build.test instspc-squote-install.test \
+ instspc-dquote-install.test instspc-bquote-install.test \
+ instspc-sharp-install.test instspc-dollar-install.test \
+ instspc-linefeed-install.test instspc-a_lf_b-install.test
+
+ # The testsuite variable `$me' should be overridable from the
+ # test scripts, but not from the environment.
+ TESTS_ENVIRONMENT = test x"$$me" = x || unset me;
TESTS = \
-self-check-me-in-env.test \
-aclibobj.test \
aclocal.test \
aclocal3.test \
aclocal4.test \
req.test \
reqd.test \
reqd2.test \
+repeated-options.test \
rulepat.test \
+self-check-cleanup.test \
+self-check-dir.test \
+self-check-exit.test \
+self-check-is_newest.test \
+self-check-me.test \
++self-check-me-in-env.test \
+self-check-sanity.test \
+self-check-unindent.test \
sanity.test \
scripts.test \
seenc.test \
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Defines for Automake testing environment.
-# Tom Tromey <tromey@cygnus.com>
-
-# Be more Bourne compatible.
-# (Snippet copied from configure's initialization in Autoconf 2.64)
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+## -------------------------------------------------------- ##
+## Source static setup and definitions for the testsuite. ##
+## -------------------------------------------------------- ##
+
+# This code needs to be 'set -e' clean.
+
+# Ensure we are running from the right directory.
+test -f ./defs-static || {
+ echo "$0: ./defs-static: not found in current directory" >&2
+ exit 99
+}
+
+# Source the shell sanitization and variables' definitions.
+. ./defs-static || exit 99
+
+# The name of the current test (without the `.test' suffix).
+# Test scripts can override it if they need to (but this should
+# be done carefully, and *before* including ./defs).
+if test -z "$me"; then
+ # Guard against failure to spawn sed (seen on MSYS), or empty $argv0.
+ me=`echo "$argv0" | sed -e 's,.*[\\/],,;s/\.test$//'` \
+ && test -n "$me" \
+ || { echo "$argv0: failed to define \$me" >&2; exit 99; }
++elif env | grep '^me=' >/dev/null; then
++ echo "$0: variable \`me' is set in the environment: this is unsafe" >&2
++ exit 99
fi
+## ---------------------------------------- ##
+## Sanity checks and environment cleanup. ##
+## ---------------------------------------- ##
+
# A single whitespace character.
sp=' '
# A tabulation character.