From: Ralf Wildenhues Date: Mon, 24 Jan 2011 20:43:41 +0000 (+0100) Subject: Merge branch 'maint' X-Git-Tag: ng-0.5a~238 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c383211ab93ae36b3d9485da4101852db74ce0cc;p=thirdparty%2Fautomake.git Merge branch 'maint' --- c383211ab93ae36b3d9485da4101852db74ce0cc diff --cc ChangeLog index 6a8aa8075,1118e6037..18567c69a --- a/ChangeLog +++ b/ChangeLog @@@ -1,19 -1,29 +1,35 @@@ -2011-01-23 Ralf Wildenhues - - tests: avoid instspc.test failures due to make's whitespace trimming - * tests/instspc.test: Prepend './' when passing the test - characters, to avoid leading whitespace characters to be trimmed - from macros set from environment variables. Fixes testsuite - failures with HP-UX, IRIX, and Tru64/OSF make. - + 2011-01-23 Stefano Lattarini + + coverage: test semantics of "dummy" per-target flags + * tests/specflg-dummy.test: New test, ensuring that even "dummy" + per-target flags triggers the use of renamed objects. + * tests/Makefile.am (TESTS): Update. + Suggestion by Ralf Wildenhues. + + 2011-01-23 Stefano Lattarini + + tests defs: sanitize IFS - * tests/defs.in ($IFS): Define to , , . ++ * tests/defs ($IFS): Define to , , . + ($sp): New variable, holding a single whitespace character. + ($tab): New variable, holding a tabulation character. + ($nl): New variable, holding a newline character. + +2011-01-23 Ralf Wildenhues + + tests: avoid instspc* failures due to make's whitespace trimming + * tests/instspc-tests.sh: Prepend './' when passing the test + characters, to avoid leading whitespace characters to be trimmed + from macros set from environment variables. Fixes testsuite + failures with HP-UX and Tru64/OSF make. + 2011-01-22 Ralf Wildenhues + tests: fix VPATH auto-expansion workarounds. + * tests/suffix10.test, tests/suffix11.test, tests/suffix12.test, + tests/suffix3.test, tests/suffix5.test, tests/suffix8.test: + Ensure $< is not surrounded by white space, to prevent Solaris + make from applying automatic VPATH text expansion. + tests: fix VPATH auto-expansion workarounds. * tests/parallel-tests8.test, tests/suffix13.test: Ensure $< is not surrounded by white space, to prevent Solaris diff --cc tests/defs index d89b34120,21fcc34de..650ad8fc9 --- a/tests/defs +++ b/tests/defs @@@ -17,134 -17,89 +17,146 @@@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# Defines for Automake testing environment. -# Tom Tromey - -# 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 -fi +## -------------------------------------------------------- ## +## 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.) +# 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; } + + +## ---------------------------------------- ## +## Sanity checks and environment cleanup. ## +## ---------------------------------------- ## + # 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 we are running from the right directory. -test -f ./defs || { - echo "defs: not found in current directory" 1>&2 - exit 1 +# 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 +} + +# 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 DISABLE_HARD_ERRORS +unset TESTS +unset TEST_LOG_COMPILER +unset TEST_LOGS +unset RECHECK_LOGS +unset VERBOSE + + +## ---------------------------- ## +## Auxiliary shell functions. ## +## ---------------------------- ## + +# 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 + (exit $1) + exit $1 +} + +# 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" } -if test -z "$srcdir"; then - # compute $srcdir. - srcdir=`echo "$0" | sed -e 's,/[^\\/]*$,,'` - test "$srcdir" = $0 && srcdir=. -else :; fi +# 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 +} -# Ensure $srcdir is set correctly. -test -f "$srcdir/defs.in" || { - echo "$srcdir/defs.in not found, check \$srcdir" 1>&2 - exit 1 +# AUTOMAKE_fails [options...] +# --------------------------- +# Run Automake with OPTIONS, and fail if automake +# does not exit with STATUS. +AUTOMAKE_fails () +{ + AUTOMAKE_run 1 ${1+"$@"} } -me=`echo "$0" | sed -e 's,.*[\\/],,;s/\.test$//'` - -APIVERSION='@APIVERSION@' -PATH_SEPARATOR='@PATH_SEPARATOR@' - -# Make sure we override the user shell. -SHELL='@SHELL@' -export SHELL -# User can override various tools used. -test -z "$PERL" && PERL='@PERL@' -test -z "$MAKE" && MAKE=make -test -z "$AUTOCONF" && AUTOCONF="@am_AUTOCONF@" -test -z "$AUTOHEADER" && AUTOHEADER="@am_AUTOHEADER@" -test -z "$AUTOUPDATE" && AUTOUPDATE=autoupdate -test -z "$MISSING" && MISSING=`pwd`/../lib/missing -# Use -Werror because this also turns some Perl warnings into error. -# (Tests for which this is inappropriate should use -Wno-error.) -test -z "$ACLOCAL" && ACLOCAL="aclocal-$APIVERSION -Werror" -# Extra flags to pass to aclocal before all other flags added by this script. -ACLOCAL_TESTSUITE_FLAGS= -export ACLOCAL_TESTSUITE_FLAGS - -# See how Automake should be run. We put --foreign as the default -# strictness to avoid having to create lots and lots of files. A test -# can override this by specifying a different strictness. Use -Wall -# -Werror by default. Tests for which this is inappropriate -# (e.g. when testing that a warning is enabled by a specific switch) -# should use -Wnone or/and -Wno-error -test -z "$AUTOMAKE" && AUTOMAKE="automake-$APIVERSION --foreign -Werror -Wall" - -PATH="`pwd`$PATH_SEPARATOR$PATH" + +## ----------------------------------------------------------- ## +## 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 itslef. echo "$PATH" -# Some shells forget to export modified environment variables. -# (See note about `export' in the Autoconf manual.) -export PATH +# 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.