Hash :
db973eaa
Author :
Date :
2012-02-21T19:47:36
tests: prefer 'configure.ac' over 'configure.in' With this change, our testsuite now uses 'configure.ac' as the name for the typical autoconf input, instead of the obsolescent 'configure.in' (which has been deprecated for several years, at least since autoconf 2.50). Most of the test cases changed by this commit have been automatically modified with this sed command (using GNU sed): sed -i 's/\<configure\(\\\?\)\.in\>/configure\1.ac/g' * syntax-checks.mk (sc_tests_no_configure_in): New syntax check. (syntax_check_rules): Add it. * tests/defs: Create stub for autoconf input in 'configure.ac', not in 'configure.in'. Adjust comments. ($AUTOCONF, $AUTOHEADER, $AUTORECONF): Remove workaround for the infamous debian autoconf wrapper: we don't need such workaround anymore now that we name our autoconf input as 'configure.ac'. For more information, see commit v1.11-564-g63da492 "test defs: hack to support autoconf-wrapper programs" of 16-12-2011. * tests/README: Use 'configure.ac', not 'configure.in'. * Many many tests: Likewise. * tests/backcompat3.test: Adjust to avoid spurious failures. * tests/backcompat5.test: Likewise. * tests/missing6.test: Likewise. * tests/backcompat6.test: Likewise, and extend a bit since we are at it.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
#! /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/>.
# Check that the parallel-tests driver removed incomplete log files
# when interrupt upon some signal. This test is definitely too hacky,
# but we couldn't find a better way to deal with inter-processes
# signals and the whole process-synchronization mess.
am_parallel_tests=yes
. ./defs || Exit 1
plan_ 16
cat >> configure.ac << 'END'
AC_OUTPUT
END
cat > Makefile.am << 'END'
TESTS = foo.test
## Provide more debugging info.
TEST_LOG_COMPILER = $(SHELL) -x
## Required by foo.test; see below.
AM_TESTS_FD_REDIRECT = 9>&1
END
# This is hacky and ugly, but has the great advantage of avoiding us a lot
# of pain with background processes and related synchronization issues.
cat - "$am_scriptdir"/test-driver > test-driver <<'END'
#!/bin/sh
echo $$ > pid
END
cat > foo.test << 'END'
#!/bin/sh -e
# We expect the test driver to be terminated by a signal, and so
# to exit with non-zero status, thus causing "make check" to fail.
# Exiting with status 0 from this test script is thus a good way to
# make unexpected behaviours more evident, since this will likely
# cause and unexpected success in "make check".
trap 'exit 0' 0;
stop_test () { exit 0; }
# We need the "foo is starting to run" string flushed to standard output
# ASAP, because we are soon going to grep for that string in the log file
# where the test driver is redirecting this script's stdout. The safest
# way force this flushing portably is to rely on perl I/O capabilities.
$PERL -e 'BEGIN { $| = 1 }; print "foo is starting to run\n"' || stop_test
ls -l >&9 || stop_test
bailout ()
{
# Print this to the original stdout (saved in the fd 9), so that the
# emitted "Bail out!" directive will be interpreted by the test driver
# running the Automake testsuite.
echo "Bail out! $*" >&9
stop_test
}
test $sig -gt 0 || bailout "\$sig not exported to test script"
res=ok; cat foo.log >&9 || res="not ok"
echo "$res - logfile created and readable [SIG $sig]" >&9
res=ok; grep '^foo is starting to run$' foo.log >&9 || res='not ok'
echo "$res - logfile contains output from test script [SIG $sig]" >&9
cat pid >&9 || bailout "cannot get PID of test driver"
kill -$sig `cat pid` || bailout "cannot send signal $sig to test driver"
stop_test
END
chmod a+x foo.test
$ACLOCAL || fatal_ "aclocal failed"
$AUTOCONF || fatal_ "autoconf failed"
$AUTOMAKE || fatal_ "automake failed"
./configure || fatal_ "./configure failed"
# The only signals that can be trapped portable are 1 "SIGHUP",
# 2 "SIGINT", 13 "SIGPIPE" and 15 "SIGTERM".
trapped_signals='1 2 13 15'
for sig in $trapped_signals; do
if is_blocked_signal $sig; then
for i in 1 2 3 4; do echo "ok # SKIP signal $sig is blocked"; done
continue
fi
rm -f pid fail *.log
r=ok; env PERL="$PERL" sig="$sig" $MAKE check && r='not ok'
echo "$r - signal $sig to test driver causes \"make check\" to fail"
ls -l
# These files shouldn't exist, but in case they do, their content might
# provide helpful information about the causes of the failure(s).
cat foo.log || :
cat test-suite.log || :
r=ok; ls | $EGREP 'foo.*\.(log|tmp)' && r='not ok'
echo "$r - test driver clean up log and tmp files after signal $sig"
done
: