- * tests/defs.in (fatal_): New function.
+ 2011-06-08 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ test defs: new function 'fatal_', for hard errors
+ Before this patch, the only way offered by tests/defs to
+ properly signal a hard error was the `framework_failure_'
+ function. But the error message issued by that function,
+ as its name would suggest, refers to a set-up failure in the
+ testsuite, while hard errors can obviously also be due to
+ other reasons. The best way to fix this inconsistency is to
+ introduce a new function with a more general error message.
+ Inspired by a recent similar change to Gnulib's tests/init.sh.
++ * tests/defs (fatal_): New function.
+ * tests/README (Section "Writing test cases" subsection "Do"):
+ Suggest the use of `fatal_', not of `framework_failure_', for
+ generic hard errors. The latter should be reserved for "real"
+ set-up failures.
+
+2011-06-07 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ tests: `lib/' shell scripts transparently tested also with $SHELL
+ With the previous commit, the user could prefer the use of $SHELL
+ over /bin/sh in some tests checking the Automake-provided shell
+ scripts by manually exporting `test_prefer_config_shell' to "yes"
+ in the environment. With this commit, we ensure that such tests
+ *always* and *transparently* run using both $SHELL and /bin/sh
+ to execute the checked scripts. The `test_prefer_config_shell'
+ variable becomes an internal detail, and is no more meant to be
+ manually defined or overridden.
+ * tests/defs-static.in: Check that `test_prefer_config_shell' is
+ not exported in the environment. Error out if this is the case.
+ * tests/config-shell-tests.sh: New file, driver script to run
+ checks on the shell scripts in `lib/' using the $SHELL determined
+ at configure time instead of the default system shell /bin/sh.
+ * Makefile.am (TESTS_EXTENSIONS): Add `.shtst'.
+ (SHTST_LOG_COMPILER): Define, it calls `config-shell-tests.sh'.
+ (config_shell_tests): Define to a list of tests that wraps other
+ `*.test' tests using `config-shell-tests.sh'.
+ ($(config_shell_tests)): Dummy dependency declaration required
+ in order to have make actually produce expected log files from
+ the `.shtst.log' suffix rule.
+ (EXTRA_DIST): Distribute `config-shell-tests.sh'.
+ (TESTS): Add `$(config_shell_tests)'.
+ * tests/self-check-env-sanitize.test: Update, by checking that
+ `test_prefer_config_shell' isn't exported in the environment.
+
+2011-06-07 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ tests: can use also $SHELL to check shell scripts from `lib/'
+ * tests/ar-lib.test: If the variable `$test_prefer_config_shell'
+ is set to "yes", run the script under test with configure-time
+ determined $SHELL, rather than with /bin/sh.
+ The `$test_prefer_config_shell' variable defaults to empty, but
+ can be overridden at runtime by the user, thus allowing more
+ coverage.
+ * tests/compile.test: Likewise.
+ * tests/compile2.test: Likewise.
+ * tests/compile3.test: Likewise.
+ * tests/compile4.test: Likewise.
+ * tests/compile5.test: Likewise.
+ * tests/compile6.test: Likewise.
+ * tests/instsh2.test: Likewise.
+ * tests/instsh3.test: Likewise.
+ * tests/mkinst3.test: Likewise.
+ * tests/missing.test: Likewise.
+ * tests/missing2.test: Likewise.
+ * tests/missing3.test: Likewise.
+ * tests/missing5.test: Likewise.
+ * tests/defs (get_shell_script): New subroutine, factoring out
+ code common to the tests above.
+ (xsi-lib-shell): If `$test_prefer_config_shell' is set to "yes",
+ check that $SHELL, not /bin/sh, supports XSI constructs, as we
+ expect the test will use $SHELL and not /bin/sh to run the
+ script being tested.
+
+2011-06-07 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ tests defs: better requirements for XSI shells
+ This change avoids potential spurious failures with tests using
+ the requirement 'xsi-shell' to mean that they want */bin/sh* (not
+ $SHELL) to be XSI-conforming. This idiom used to work before
+ commit `v1.11-874-g1321be7' (as back then the test scripts were
+ unconditionally run with /bin/sh), but has become inconsistent
+ now that the test scripts re-execute themselves with configure
+ determined $SHELL.
+ The described spurious failures have already occurred in practice,
+ for examples on Solaris systems which also had GNU Bash installed.
+ From a suggestion by Peter Rosin. See discussion at:
+ <http://lists.gnu.org/archive/html/automake-patches/2011-06/msg00016.html>
+ * tests/defs (xsi-shell): Now check that $SHELL, rather than the
+ shell currently running the test script, is an XSI shell.
+ (xsi-bin-sh): New requirement, checking that /bin/sh (which can
+ differ from $SHELL) is an XSI shell.
+ (xsi-lib-shell): New requirement, checking that the shell that
+ should be used to test the Automake-provided scripts from `lib/'
+ is an XSI shell. For the moment, this is just an alias for
+ `xsi-bin-sh'.
+ (require_xsi): New subroutine, used to factor out code common to
+ the requirements above.
+ ($xsi_shell_code): New variable, contains shell code supposed to
+ work only with XSI shells. Used by the new subroutine above.
+ * tests/ar-lib.test ($required): Require 'xsi-lib-shell' instead
+ of 'xsi-shell', since the script we test here is run with /bin/sh,
+ not with $SHELL.
+ * tests/compile3.test: Likewise.
+ * tests/compile6.test: Likewise.
+
+2011-06-05 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ tests: fix typo-related error in auxdir2.test
+ * tests/auxdir2.test (configure.in): Close m4 quoting in the
+ argument to AC_CONFIG_AUX_DIR. Without this, aclocal fails with
+ "ERROR: end of file in string". This problem hasn't been exposed
+ by the testsuite before because this test is in XFAIL_TESTS, so
+ its failure went unnoticed, even if it was due to a wrong cause.
+ Bug introduced in commit v1.11-249-g49ac3de.
+
+2011-06-05 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ self tests: check that `$me' can be overridden
+ * tests/self-check-me.test: Check that `$me' can be overridden
+ before sourcing ./defs, with or without sourcing ./defs-static
+ beforehand, and that this override is honored. Update heading
+ comments.
+
+2011-06-02 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ self tests: fix another spurious failure
+ Our ad-hoc usage of `tests/defs' in the testsuite's self tests
+ stopped working properly when we made the test scripts re-execute
+ themselves with the configure-time $SHELL. Fix this.
+ Fixes a regression introduced by commit 'v1.11-874-g1321be7'.
+ * tests/self-check-exit.test: Export `AM_TESTS_REEXEC' to "no"
+ before running the self tests. This fixes a spurious failure
+ present only when the test was run by hand.
+
+2011-06-02 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ silent-rules tests: fix spurious failures with Sun Studio C++
+ * tests/silentcxx.test: The C++ compiler from Sun Studio is named
+ `CC'. Account for this in our grepping checks on the make output.
+ Since we are at it, throw in a couple of improvements to comments
+ and formatting.
+ * tests/silent-many-generic.test: The C++ compiler from Sun Studio
+ is named `CC', and this can cause spurious failures in our grepping
+ of the make output. Work around this by using a wrapper script
+ around the C++ compiler (generated on the fly), since filtering the
+ make output proved to be too fragile.
+
+2011-06-02 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ tests: fix spurious failure in backcompat2.test on NetBSD
+ * tests/backcompat2.test: Add trailing `:' in the body of a `for'
+ loop, in case the last command there might have an exit status
+ different 0. This work around `set -e' issues in some BSD shells,
+ e.g., NetBSD /bin/ksh.
+
+2011-06-02 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ tests: fix spurious failure in autohdr3.test
+ * tests/autohder3.test (Makefile.am): Let `test' depend on `all',
+ so that config.h header is truly remade.
+ Remove now useless call to `$MAKE' when non-GNU make is in use.
+ Failure introduced by commit `v1.11-895-g5e62b96'.
+
+2011-06-02 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ tests: fix spurious failure of cond29.test on NetBSD
+ * tests/cond29.test: Skip if we cannot safely limit the maximal
+ size of used virtual memory to 20K. This fixes a spurious failure
+ on NetBSD.
+ Bug introduced in commit `v1.11-885-g908d335'.
+
+2011-06-02 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ maintcheck: fix again few more failures
+ * tests/cond29.test: To please the `sc_tests_Exit_not_exit'
+ maintainer check, avoid using `sh -c "exit 0"' where a simple
+ `sh -c :' will do.
+ * tests/depmod-data.test: Use creative quoting to avoid
+ spuriously triggering the `sc_tests_Exit_not_exit' maintainer
+ check.
+
+2011-06-02 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ maintcheck: fix some more failures
+ * tests/instdir-ltlib.test: Use creative quoting to avoid
+ spuriously triggering the `sc_rm_minus_f' maintainer check.
+ * tests/instdir-prog.test: Likewise.
+ * tests/instspc-data.test: Use creative quoting to avoid
+ spuriously triggering the `sc_tests_Exit_not_exit' maintainer
+ check.
+
2011-06-02 Stefano Lattarini <stefano.lattarini@gmail.com>
maintcheck: fix some failures, extend some checks
--- /dev/null
+# -*- shell-script -*-
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 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/>.
+
+
+# IMPORTANT NOTE: This file should execute correctly with any system's
+# /bin/sh shell, and not only with configure-time detected $CONFIG_SHELL,
+# until differently and explicitly specified.
+
+
+## -------------------------------------------------------- ##
+## 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; }
+fi
+
+## ---------------------- ##
+## Early sanity checks. ##
+## ---------------------- ##
+
+# A single whitespace character.
+sp=' '
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+
+# As autoconf-generated configure scripts do, ensure that IFS
+# is defined initially, so that saving and restoring $IFS works.
+IFS=$sp$tab$nl
+
+# Ensure $testsrcdir is set correctly.
+test -f "$testsrcdir/defs-static.in" || {
+ echo "$me: $testsrcdir/defs-static.in not found, check \$testsrcdir" >&2
+ exit 99
+}
+
+# Ensure $testbuilddir is set correctly.
+test -f "$testbuilddir/defs-static" || {
+ echo "$me: $testbuilddir/defs-static not found, check \$testbuilddir" >&2
+ exit 99
+}
+
+
+## ------------------------------------ ##
+## Ensure we run with a proper shell. ##
+## ------------------------------------ ##
+
+# Make sure we run with the shell detected at configure time (unless
+# the user forbids it).
+case ${AM_TESTS_REEXEC-yes} in
+ n|no|false|0)
+ ;;
+ *)
+ # Ensure we can find ourselves.
+ if test ! -f "$0"; then
+ echo "$me: unable to find myself: $0" >&2
+ exit 99
+ fi
+ AM_TESTS_REEXEC=no; export AM_TESTS_REEXEC
+ # Cannot simply do `opts=$-', since the content of $- is not
+ # portable among different shells. So try to propagate only
+ # the portable and interesting options.
+ case $- in
+ *x*v*|*v*x) opts=-vx;;
+ *v*) opts=-v;;
+ *x*) opts=-x;;
+ *) opts=;;
+ esac
+ echo $me: exec $SHELL $opts "$0" "$*"
+ exec $SHELL $opts "$0" ${1+"$@"}
+ echo "$me: failed to re-execute with $SHELL" >&2
+ exit 99
+ ;;
+esac
+
+# NOTE: From this point on, we can assume this file is being executed
+# by the configure-time detected $CONFIG_SHELL.
+
+
+## ---------------------- ##
+## Environment cleanup. ##
+## ---------------------- ##
+
+# Unset some MAKE... variables that may cause $MAKE to act like a
+# recursively invoked sub-make. Any $MAKE invocation in a test is
+# conceptually an independent invocation, not part of the main
+# 'automake' build.
+unset MFLAGS MAKEFLAGS AM_MAKEFLAGS MAKELEVEL __MKLVL__ MAKE_JOBS_FIFO
+# Unset verbosity flag.
+unset V
+# Also unset variables that will let `make -e install' divert
+# files into unwanted directories.
+unset DESTDIR
+unset prefix exec_prefix bindir datarootdir datadir docdir dvidir
+unset htmldir includedir infodir libdir libexecdir localedir mandir
+unset oldincludedir pdfdir psdir sbindir sharedstatedir sysconfdir
+# The tests call `make -e' but we do not want $srcdir from the environment
+# to override the definition from the Makefile.
+unset srcdir
+# Also unset variables that control our test driver. While not
+# conceptually independent, they cause some changed semantics we
+# need to control (and test for) in some of the tests to ensure
+# backward-compatible behavior.
+unset TESTS_ENVIRONMENT
+unset DISABLE_HARD_ERRORS
+unset TESTS
+unset TEST_LOG_COMPILER
+unset TEST_LOGS
+unset RECHECK_LOGS
+unset VERBOSE
+
+
+## ---------------------------- ##
+## Auxiliary shell functions. ##
+## ---------------------------- ##
+
+# This is used in `Exit' and in the exit trap. See comments in the latter
+# for more information,
+am__test_skipped=no
+
+# We use a trap below for cleanup. This requires us to go through
+# hoops to get the right exit status transported through the signal.
+# So use `Exit STATUS' instead of `exit STATUS' inside of the tests.
+# Turn off errexit here so that we don't trip the bug with OSF1/Tru64
+# sh inside this function.
+Exit ()
+{
+ set +e
+ # See comments in the exit trap for the reason we do this.
+ test 77 = $1 && am__test_skipped=yes
+ (exit $1); exit $1
+}
+
+# Print warnings (e.g., about skipped and failed tests) to this file
+# number. Override by putting, say:
+# stderr_fileno_=9; export stderr_fileno_; exec 9>&2;
+# in the definition of AM_TESTS_ENVIRONMENT.
+# This is useful when using automake's parallel tests mode, to print the
+# reason for skip/failure to console, rather than to the *.log files.
+: ${stderr_fileno_=2}
+
+# Copied from Gnulib's `tests/init.sh'.
+warn_ () { echo "$@" 1>&$stderr_fileno_; }
+fail_ () { warn_ "$me: failed test: $@"; Exit 1; }
+skip_ () { warn_ "$me: skipped test: $@"; Exit 77; }
++fatal_ () { warn_ "$me: hard error: $@"; Exit 99; }
+framework_failure_ () { warn_ "$me: set-up failure: $@"; Exit 99; }
+
+# cross_compiling
+# ---------------
+# Tell whether we are cross-compiling. This is especially useful to skip
+# tests (or portions of them) that requires a native compiler.
+cross_compiling ()
+{
+ test x"$host_alias" != x && test x"$build_alias" != x"$host_alias"
+}
+
+# is_newest FILE FILES
+# --------------------
+# Return false if any file in FILES is newer than FILE.
+# Resolve ties in favor of FILE.
+is_newest ()
+{
+ is_newest_files=`find "$@" -newer "$1"`
+ test -z "$is_newest_files"
+}
+
+# AUTOMAKE_run status [options...]
+# --------------------------------
+# Run Automake with OPTIONS, and fail if automake
+# does not exit with STATUS.
+AUTOMAKE_run ()
+{
+ expected_exitcode=$1
+ shift
+ exitcode=0
+ $AUTOMAKE ${1+"$@"} >stdout 2>stderr || exitcode=$?
+ cat stderr >&2
+ cat stdout
+ test $exitcode = $expected_exitcode || Exit 1
+}
+
+# AUTOMAKE_fails [options...]
+# ---------------------------
+# Run Automake with OPTIONS, and fail if automake
+# does not exit with STATUS.
+AUTOMAKE_fails ()
+{
+ AUTOMAKE_run 1 ${1+"$@"}
+}
+
+# using_gmake
+# -----------
+# Return success if $MAKE is GNU make, return failure otherwise.
+# Caches the result for speed reasons.
+using_gmake ()
+{
+ case $am__using_gmake in
+ yes)
+ return 0;;
+ no)
+ return 1;;
+ '')
+ # Use --version AND -v, because SGI Make doesn't fail on --version.
+ # Also grep for GNU because newer versions of FreeBSD make do
+ # not complain about `--version' (they seem to silently ignore it).
+ if $MAKE --version -v | grep GNU; then
+ am__using_gmake=yes
+ return 0
+ else
+ am__using_gmake=no
+ return 1
+ fi;;
+ *)
+ echo "invalid value for \$am__using_gmake: '$am__using_gmake'" >&2
+ Exit 99;;
+ esac
+}
+am__using_gmake="" # Avoid interferences from the environment.
+
+commented_sed_unindent_prog='
+ /^$/b # Nothing to do for empty lines.
+ x # Get x<indent> into pattern space.
+ /^$/{ # No prior x<indent>, go prepare it.
+ g # Copy this 1st non-blank line into pattern space.
+ s/^\(['"$tab"' ]*\).*/x\1/ # Prepare x<indent> in pattern space.
+ } # Now: x<indent> in pattern and <line> in hold.
+ G # Build x<indent>\n<line> in pattern space, and
+ h # duplicate it into hold space.
+ s/\n.*$// # Restore x<indent> in pattern space, and
+ x # exchange with the above duplicate in hold space.
+ s/^x\(.*\)\n\1// # Remove leading <indent> from <line>.
+ s/^x.*\n// # Restore <line> when there is no leading <indent>.
+'
+
+# unindent [input files...]
+# -------------------------
+# Remove the "proper" amount of leading whitespace from the given files,
+# and output the result on stdout. That amount is determined by looking
+# at the leading whitespace of the first non-blank line in the input
+# files. If no input file is specified, standard input is implied.
+unindent ()
+{
+ if test x"$sed_unindent_prog" = x; then
+ sed_unindent_prog=`printf '%s\n' "$commented_sed_unindent_prog" | sed -e "s/ *# .*//"`
+ fi
+ sed "$sed_unindent_prog" ${1+"$@"}
+}
+sed_unindent_prog="" # Avoid interferences from the environment.
+
+# get_shell_script SCRIPT-NAME
+# -----------------------------
+# Fetch an Automake-provided test script from the `lib/' directory into
+# the current directory, and, if the `$test_prefer_config_shell' variable
+# is set to "yes", modify its shebang line to use $SHELL instead of
+# /bin/sh.
+get_shell_script ()
+{
+ if test x"$test_prefer_config_shell" = x"yes"; then
+ sed "1s|#!.*|#! $SHELL|" "$top_testsrcdir/lib/$1" > "$1"
+ chmod a+x "$1"
+ else
+ cp "$top_testsrcdir/lib/$1" .
+ fi
+ sed 10q "$1" # For debugging.
+}
+
+# require_xsi SHELL
+# -----------------
+# Skip the test if the given shell fails to support common XSI constructs.
+require_xsi ()
+{
+ test $# -eq 1 || framework_failure_ "require_xsi needs exactly one arg"
+ echo "$me: trying some XSI constructs with $1"
+ $1 -c "$xsi_shell_code" || skip_ "$1 lacks XSI features"
+}
+# Shell code supposed to work only with XSI shells. Keep this in sync
+# with libtool.m4:_LT_CHECK_SHELL_FEATURES.
+xsi_shell_code='
+ _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,b/c, \
+ && eval '\''test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5'\'
+
+
+## ----------------------------------------------------------- ##
+## Checks for required tools, and additional setups (if any) ##
+## required by them. ##
+## ----------------------------------------------------------- ##
+
+# Print it here, so that the user will see it also if the test
+# will be skipped due to some tool missing in $PATH itself.
+echo "$PATH"
+
+# So that we can force the use of correct gcc, g++ etc., consistently
+# with cross-compilation settings.
+if cross_compiling; then
+ am__tool_prefix="$host_alias-"
+else
+ am__tool_prefix=
+fi
+
+# Look for (and maybe set up) required tools and/or system features; skip
+# the current test if they are not found.
+for tool in : $required
+do
+ # Check that each required tool is present.
+ case $tool in
+ :) ;;
+ cc)
+ test "$CC" = false && skip_ "no C compiler available";;
+ c++)
+ test "$CXX" = false && skip_ "no C++ compiler available";;
+ fortran)
+ test "$FC" = false && skip_ "no Fortran compiler available";;
+ fortran77)
+ test "$F77" = false && skip_ "no Fortran 77 compiler available";;
+ xsi-shell)
+ require_xsi "$SHELL";;
+ xsi-bin-sh)
+ require_xsi "/bin/sh";;
+ xsi-lib-shell)
+ if test x"$test_prefer_config_shell" = x"yes"; then
+ require_xsi "$SHELL"
+ else
+ require_xsi "/bin/sh"
+ fi
+ ;;
+ bzip2)
+ # Do not use --version, bzip2 still tries to compress stdin.
+ echo "$me: running bzip2 --help"
+ bzip2 --help \
+ || skip_ "required program \`bzip2' not available"
+ ;;
+ cl)
+ CC=cl
+ export CC
+ echo "$me: running $CC -?"
+ $CC -? || skip_ "Microsoft C compiler \`$CC' not available"
+ ;;
+ cscope)
+ # Sun cscope is interactive without redirection.
+ echo "$me: running cscope --version </dev/null"
+ cscope --version </dev/null \
+ || skip_ "required program \`cscope' not available"
+ ;;
+ etags)
+ # Exuberant Ctags will create a TAGS file even
+ # when asked for --help or --version. (Emacs's etags
+ # does not have such problem.) Use -o /dev/null
+ # to make sure we do not pollute the tests/ directory.
+ echo "$me: running etags --version -o /dev/null"
+ etags --version -o /dev/null \
+ || skip_ "required program \`etags' not available"
+ ;;
+ GNUmake)
+ for make_ in "$MAKE" gmake gnumake :; do
+ MAKE=$make_ am__using_gmake=''
+ test "$MAKE" = : && break
+ echo "$me: determine whether $MAKE is GNU make"
+ using_gmake && break
+ done
+ test "$MAKE" = : && skip_ "this test requires GNU make"
+ export MAKE
+ unset make_
+ ;;
+ gcc)
+ # When gcc is required, export `CC=gcc' so that ./configure
+ # always use it. This is important only when the user
+ # has defined CC in his environment, otherwise ./configure will
+ # prefer gcc to other compilers.
+ CC=${am__tool_prefix}gcc
+ export CC
+ echo "$me: running $CC --version"
+ $CC --version || skip_ "GNU C compiler not available"
+ echo "$me: running $CC -v"
+ $CC -v || skip_ "botched installation for GNU C compiler"
+ ;;
+ gcj)
+ GCJ=${am__tool_prefix}gcj
+ export GCJ
+ echo "$me: running $GCJ --version"
+ $GCJ --version || skip_ "GNU Java compiler not available"
+ echo "$me: running $GCJ -v"
+ $GCJ -v || skip_ "botched installation for GNU Java compiler"
+ ;;
+ g++)
+ CXX=${am__tool_prefix}g++
+ export CXX
+ echo "$me: running $CXX --version"
+ $CXX --version || skip_ "GNU C++ compiler not available"
+ echo "$me: running $CXX -v"
+ $CXX -v || skip_ "botched installation for GNU C++ compiler"
+ ;;
+ gfortran)
+ FC=${am__tool_prefix}gfortran
+ export FC
+ echo "$me: running $FC --version"
+ $FC --version || skip_ "GNU Fortran compiler not available"
+ echo "$me: running $FC -v"
+ $FC -v || skip_ "botched installation for GNU Fortran compiler"
+ case " $required " in
+ *\ g77\ *) ;;
+ *) F77=$FC; export F77;;
+ esac
+ ;;
+ g77)
+ F77=${am__tool_prefix}g77
+ export F77
+ echo "$me: running $F77 --version"
+ $F77 --version || skip_ "GNU Fortran 77 compiler not available"
+ echo "$me: running $F77 -v"
+ $F77 -v || skip_ "botched installation for GNU Fortran 77 compiler"
+ case " $required " in
+ *\ gfortran\ *) ;;
+ *) FC=$F77; export FC;;
+ esac
+ ;;
+ icc)
+ CC=icc
+ export CC
+ # There is no way to ask *only* the compiler's version.
+ # This tool always wants to do something (by default
+ # it will try link *nothing* and complain it cannot find
+ # main(); funny). Use -help so it does not try linking anything.
+ echo "$me: running $CC -V -help"
+ $CC -V -help || skip_ "Intel C compiler \`$CC' not available"
+ ;;
+ javac)
+ # The Java compiler from JDK 1.5 (and presumably earlier versions)
+ # cannot handle the `-version' option by itself: it bails out
+ # telling that source files are missing. Adding also the `-help'
+ # option seems to solve the problem.
+ echo "$me: running javac -version -help"
+ javac -version -help || skip_ "Sun Java compiler not available"
+ ;;
+ makedepend)
+ echo "$me: running makedepend -f-"
+ makedepend -f- \
+ || skip_ "required program \`makedepend' not available"
+ ;;
+ makeinfo-html)
+ # Make sure we have makeinfo, and it understands `--html'.
+ echo "$me: running makeinfo --html --version"
+ makeinfo --html --version \
+ || skip_ "cannot find a makeinfo program that groks the" \
+ "\`--html' option"
+ ;;
+ non-root)
+ # Skip this test case if the user is root.
+ # We try to append to a read-only file to detect this.
+ priv_check_temp=priv-check.$$
+ touch $priv_check_temp || exit 99
+ chmod a-w $priv_check_temp || exit 99
+ (echo foo >> $priv_check_temp) >/dev/null 2>&1
+ overwrite_status=$?
+ rm -f $priv_check_temp
+ if test $overwrite_status -eq 0; then
+ skip_ "cannot drop file write permissions"
+ fi
+ unset priv_check_temp overwrite_status
+ ;;
+ perl-threads)
+ if test "$WANT_NO_THREADS" = "yes"; then
+ skip_ "Devel::Cover cannot cope with threads"
+ fi
+ ;;
+ native)
+ cross_compiling && skip_ "doesn't work in cross-compile mode"
+ ;;
+ python)
+ # Python doesn't support --version, it has -V
+ echo "$me: running python -V"
+ python -V || skip_ "python interpreter not available"
+ ;;
+ ro-dir)
+ # Skip this test case if read-only directories aren't supported
+ # (e.g., under DOS.)
+ ro_dir_temp=ro_dir.$$
+ mkdir $ro_dir_temp || exit 99
+ chmod a-w $ro_dir_temp || exit 99
+ (: > $ro_dir_temp/probe) >/dev/null 2>/dev/null
+ create_status=$?
+ rm -rf $ro_dir_temp
+ if test $create_status -eq 0; then
+ skip_ "cannot drop directory write permissions"
+ fi
+ unset ro_dir_temp create_status
+ ;;
+ rst2html)
+ # Try the variants that are tried in check.am.
+ while :; do
+ for r2h in $RST2HTML rst2html rst2html.py; do
+ echo "$me: running $r2h --version"
+ $r2h --version && break 2
+ done
+ skip_ "no proper rst2html program found"
+ done
+ unset r2h
+ ;;
+ runtest)
+ # DejaGnu's runtest program. We rely on being able to specify
+ # the program on the runtest command-line. This requires
+ # DejaGnu 1.4.3 or later.
+ echo "$me: running runtest SOMEPROGRAM=someprogram --version"
+ runtest SOMEPROGRAM=someprogram --version \
+ || skip_ "DejaGnu is not available"
+ ;;
+ tex)
+ # No all versions of Tex support `--version', so we use
+ # a configure check.
+ if test -z "$TEX"; then
+ skip_ "TeX is required, but it wasn't found by configure"
+ fi
+ ;;
+ texi2dvi-o)
+ # Texi2dvi supports `-o' since Texinfo 4.1.
+ echo "$me: running texi2dvi -o /dev/null --version"
+ texi2dvi -o /dev/null --version \
+ || skip_ "required program \`texi2dvi' not available"
+ ;;
+ flex)
+ # Since flex is required, we pick LEX for ./configure.
+ LEX=flex
+ export LEX
+ echo "$me: running flex --version"
+ flex --version || skip_ "required program \`flex' not available"
+ ;;
+ lex)
+ test "$LEX" = false && skip_ "no Lex program available"
+ if test -z "$LEX"; then
+ # The user hasn't explicitly specified any lex program in the
+ # environment, so we try to use flex, skipping the test if it's
+ # not found.
+ LEX=flex
+ export LEX
+ echo "$me: running flex --version"
+ flex --version || skip_ "required program \`flex' not available"
+ fi
+ ;;
+ yacc)
+ test "$YACC" = false && skip_ "no Yacc program available"
+ if test -z "$YACC"; then
+ # The user hasn't explicitly specified any yacc program in the
+ # environment, so we try to use bison, skipping the test if it's
+ # not found.
+ YACC='bison -y'
+ export YACC
+ echo "$me: running bison --version"
+ bison --version || skip_ "required program \`bison' not available"
+ fi
+ ;;
+ *)
+ # Generic case: the tool must support --version.
+ echo "$me: running $tool --version"
+ # It is not likely but possible that $tool is a special builtin,
+ # in which case the shell is allowed to exit after an error.
+ # So, please leave the subshell here.
+ ($tool --version) || skip_ "required program \`$tool' not available"
+ ;;
+ esac
+done
+
+# Using just `$testbuilddir' for the check here is ok, since the
+# further temporary subdirectory where the test will be run is
+# ensured not to contain any whitespace character.
+case $testbuilddir in
+ *\ *|*\ *)
+ case " $required " in
+ *' libtool '* | *' libtoolize '* )
+ skip_ "libtool has problems with spaces in builddir name";;
+ esac
+ ;;
+esac
+
+# This test is necessary, although Automake's configure script bails out
+# when $srcdir contains spaces. This is because $testsrcdir is in not
+# configure-time $srcdir, but is instead configure-time $abs_srcdir, and
+# that is allowed to contain spaces.
+case $testsrcdir in
+ *\ * |*\ *)
+ case " $required " in
+ *' libtool '* | *' libtoolize '* | *' gettext '* )
+ skip_ "spaces in srcdir name: libtool/gettext tests won't work";;
+ esac
+ ;;
+esac
+
+# We might need extra macros, e.g., from Libtool or Gettext.
+# Find them on the system.
+# Use `-I $top_testsrcdir/m4' in addition to `--acdir=$top_testsrcdir/m4',
+# because the other `-I' directories added for libtool and gettext might
+# contain files from an old version of Automake that we don't want to use.
+# Use `-Wno-syntax' because we do not want our test suite to fail because
+# some third-party .m4 file is underquoted.
+case " $required " in
+ *' libtool '* | *' libtoolize '* | *' gettext '* )
+ aclocaldir=$testprefix/share/aclocal
+ extra_includes=""
+ if test -f $aclocaldir/dirlist; then
+ extra_includes=`
+ <$aclocaldir/dirlist \
+ sed 's/#.*//;s/[ ][ ]*$//g' \
+ | while read dir; do test ! -d "$dir" || echo "-I $dir"; done`
+ else :; fi
+
+ libtool_found=no
+ gettext_found=no
+ for d in $extra_includes $aclocaldir ; do
+ test "x$d" != x-I || continue
+ if test -f "$d/libtool.m4"; then
+ libtool_found=yes
+ fi
+ if test -f "$d/gettext.m4"; then
+ gettext_found=yes
+ fi
+ done
+ case " $required " in
+ *' libtool '*|*' libtoolize '*)
+ if test $libtool_found != yes; then
+ # Write more diagnostic to the log file than to the console.
+ echo "$me: \`libtool.m4' wasn't found in directories" \
+ "$aclocaldir $extra_includes"
+ skip_ "libtool m4 macros won't be found by aclocal"
+ fi
+ ;;
+ *' gettext '*)
+ if test $gettext_found != yes; then
+ # Write more diagnostic to the log file than to the console.
+ echo "$me: \`gettext.m4' wasn't found in directories" \
+ "$aclocaldir $extra_includes"
+ skip_ "gettext m4 macros won't be found by aclocal"
+ fi
+ ;;
+ esac
+ ACLOCAL="$ACLOCAL -Wno-syntax -I $top_testsrcdir/m4 $extra_includes -I $aclocaldir"
+ unset libtool_found gettext_found
+ unset extra_includes aclocaldir
+ ;;
+esac
+
+
+## ---------------------------------------------------------------- ##
+## Create and set up of the temporary directory used by the test. ##
+## Set up of the exit trap for cleanup of said directory. ##
+## ---------------------------------------------------------------- ##
+
+# This might be used in testcases checking distribution-related features.
+# Test scripts are free to override this if they need to.
+distdir=$me-1.0
+
+# The subdirectory where the current test script will run and write its
+# temporary/data files. This will be created shortly, and will be removed
+# by the cleanup trap below if the test passes. If the test doesn't pass,
+# this directory will be kept, to facilitate debugging.
+testSubDir=$me.dir
+
+test ! -d $testSubDir || {
+ find $testSubDir -type d ! -perm -700 -exec chmod u+rwx {} ";"
+ rm -rf $testSubDir
+}
+mkdir $testSubDir
+
+cd ./$testSubDir
+
+if test "$sh_errexit_works" = yes; then
+ trap 'exit_status=$?
+ set +e
+ cd "$testbuilddir"
+ # This is to ensure that a test script does give a SKIP outcome just
+ # because a command in it happens to exit with status 77. This
+ # behaviour, while from time to time useful to developers, is not
+ # meant to be enabled by default, as it could cause spurious failures
+ # in the wild. Thus it will be enabled only when the variable
+ # "am_explicit_skips" is set to a "true" value.
+ case $am_explicit_skips in
+ [yY]|[yY]es|1)
+ if test $exit_status -eq 77 && test $am__test_skipped != yes; then
+ exit_status=78
+ fi
+ ;;
+ esac
+ case $exit_status,$keep_testdirs in
+ 0,)
+ find $testSubDir -type d ! -perm -700 -exec chmod u+rwx {} ";"
+ rm -rf $testSubDir
+ ;;
+ esac
+ test "$signal" != 0 && echo "$me: caught signal $signal"
+ echo "$me: exit $exit_status"
+ exit $exit_status
+ ' 0
+ for signal in 1 2 13 15; do
+ trap 'signal='$signal'; { Exit 99; }' $signal
+ done
+ signal=0
+fi
+
+# Copy in some files we need.
+for file in install-sh missing depcomp; do
+ cp "$top_testsrcdir/lib/$file" . || Exit 99
+done
+
+# Build appropriate environment in test directory. Eg create
+# configure.in, touch all necessary files, etc.
+# Don't use AC_OUTPUT, but AC_CONFIG_FILES so that appending
+# still produces a valid configure.ac. But then, tests running
+# config.status really need to append AC_OUTPUT.
+{
+ echo "AC_INIT([$me], [1.0])"
+ if test x"$parallel_tests" = x"yes"; then
+ echo "AM_INIT_AUTOMAKE([parallel-tests])"
+ else
+ echo "AM_INIT_AUTOMAKE"
+ fi
+ echo "AC_CONFIG_FILES([Makefile])"
+} >configure.in
+
+## ---------------- ##
+## Ready to go... ##
+## ---------------- ##
+
+set -x
+set -e
+
+pwd