Hash :
696f44c0
Author :
Date :
2012-11-07T23:40:59
tests: remove mostly-redundant tests on silent rules We used to have several couples of tests named like 'silent-foo-gcc.sh' and 'silent-foo-generic.sh'. Differently from what the names suggest, the first test in such a couple (that is, "silent-foo-gcc.sh") was not meant to check specific GCC-related features, but rather to check how the silent rules behave in combination with automatic dependency tracking when the 'gcc' depmode (that targets GCC versions before the 3.x and 4.x release series) is forced. Such depmode forcing was done exclusively to cover the code paths in 'lib/am/depend2.am' that actually invoke the 'depcomp' script, rather than using the inlined, GCC-specific compiler invocation (the so-called "fastdep" mode), which is the default with modern GCC or with other modern compilers that can emulate the GCC command-line interface (e.g., clang 3.0). But whenever we run the silent-*-generic.sh" tests with other supported compilers which have an associated depmode different from 'gcc3', these same "non-fastdep" code paths are covered, since in those tests we run ./configure with the '--enable-dependency-tracking' option, which causes slower depmodes not to be rejected. Examples of such compilers are the Sun C and C++ compilers (at least since version 5.9, a.k.a. Sun Studio 12.1), and the Tiny C Compiler (from version 0.9.26); and I run the Automake testsuite quite regularly with those compilers. So, the "silent-*-gcc.sh" test cases don't offer any real coverage enhancements, while still using testsuite runtime and causing some (admittedly minor, but still annoying) synchronization headaches with the sister tests "silent-foo-general.sh" tests. So let's just remove these "silent-*-gcc.sh" tests. * t/silent-c-gcc.sh: Remove. * t/silent-cxx-gcc.sh: Likewise. * t/silent-lt-gcc.sh: Likewise. * t/silent-many-gcc.sh: Likewise. * t/silent-c-generic.sh: Rename ... * t/silent-c.sh: ... like this, and adjust heading comments. * t/silent-cxx-generic.sh: Rename ... * t/silent-cxx.sh: ... like this, and adjust heading comments. * t/silent-lt-generic.sh: Rename ... * t/silent-lt.sh: ... like this, and adjust heading comments. * t/silent-many-generic.sh: Rename ... * t/silent-many-languages.sh: ... like this, and adjust heading comments. * t/list-of-tests.mk: Adjust. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
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
#!/bin/sh
# Copyright (C) 2009-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 silent-rules mode for C, without libtool, both with and without
# automatic dependency tracking.
required=cc
. test-init.sh
mkdir sub
cat >>configure.ac <<'EOF'
AC_CONFIG_FILES([sub/Makefile])
AC_PROG_CC
AM_PROG_CC_C_O
AC_OUTPUT
EOF
cat > Makefile.am <<'EOF'
# Need generic and non-generic rules.
bin_PROGRAMS = foo bar
bar_CFLAGS = $(AM_CFLAGS)
SUBDIRS = sub
EOF
cat > sub/Makefile.am <<'EOF'
AUTOMAKE_OPTIONS = subdir-objects
# Need generic and non-generic rules.
bin_PROGRAMS = baz bla
bla_CFLAGS = $(AM_CFLAGS)
EOF
cat > foo.c <<'EOF'
int main ()
{
return 0;
}
EOF
cp foo.c bar.c
cp foo.c sub/baz.c
cp foo.c sub/bla.c
$ACLOCAL
$AUTOMAKE --add-missing
$AUTOCONF
for config_args in \
'--enable-dependency-tracking' \
'--disable-dependency-tracking' \
; do
./configure --enable-silent-rules $config_args
$MAKE >stdout || { cat stdout; exit 1; }
cat stdout
$EGREP ' (-c|-o)' stdout && exit 1
grep 'mv ' stdout && exit 1
grep 'CC .*foo\.' stdout
grep 'CC .*bar\.' stdout
grep 'CC .*baz\.' stdout
grep 'CC .*bla\.' stdout
grep 'CCLD .*foo' stdout
grep 'CCLD .*bar' stdout
grep 'CCLD .*baz' stdout
grep 'CCLD .*bla' stdout
$MAKE clean
$MAKE V=1 >stdout || { cat stdout; exit 1; }
cat stdout
grep ' -c' stdout
grep ' -o foo' stdout
$EGREP '(CC|LD) ' stdout && exit 1
$MAKE distclean
done
: