Hello automakers. I updated the patch slighty (see test `depdist.test') to follow the emerging principle of preferring "semantic" tests to "grepping" tests in the Automake testsuite.
Regards, Stefano
From b6d67d34e440ef275f77c955a84658fb70c160f0 Mon Sep 17 00:00:00 2001 From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Mon, 21 Jun 2010 18:07:09 +0200 Subject: [PATCH] Modernize, improve and/or tweak various test scripts. * tests/stamph2.test: Improve m4 quoting in `configure.in', and prefer trailing `:' over trailing `Exit 0'. * tests/syntax.test: Escape literal dots in grep regexps. * tests/copy.test: Enable `errexit' shell flag. Extend test by checking with `test' utility that the script `install-sh' is copied, but not symlinked. * tests/depdist.test: Move setting of `errexit' shell flag earlier in the script (just after inclusion of ./defs). Avoid obsoleted constructs in generated `configure.in'. Prefer to do our checks by running configure and make over grepping Makefile.in. * tests/target-cflags: Move setting of `errexit' shell flag earlier in the script (just after inclusion of ./defs). Use the `configure.in' stub created by `./defs', rather than writing it from scratch. * tests/target-clash: Do not uselessly run autoconf. * tests/ctarget1.test: Renamed ... * tests/cond1.test: ... to this. Use the `configure.in' stub created by `./defs', rather than writing it from scratch. Move setting of `errexit' shell flag earlier in the script (just after inclusion of ./defs). Other minor cosmetic changes. * tests/Makefile.am (TESTS): Updated. --- ChangeLog | 25 +++++++++++++++++++ tests/Makefile.am | 2 +- tests/Makefile.in | 2 +- tests/{ctarget1.test => cond1.test} | 20 +++++++------- tests/copy.test | 11 +++++++- tests/depdist.test | 46 +++++++++++++++++++++++++---------- tests/stamph2.test | 18 +++++++------- tests/syntax.test | 7 ++++- tests/target-cflags.test | 12 ++++---- tests/targetclash.test | 5 ++- 10 files changed, 102 insertions(+), 46 deletions(-) rename tests/{ctarget1.test => cond1.test} (81%) diff --git a/ChangeLog b/ChangeLog index 2334c5c..a990bc9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2010-09-13 Stefano Lattarini <stefano.lattar...@gmail.com> + + Modernize, improve and/or tweak various test scripts. + * tests/stamph2.test: Improve m4 quoting in `configure.in', and + prefer trailing `:' over trailing `Exit 0'. + * tests/syntax.test: Escape literal dots in grep regexps. + * tests/copy.test: Enable `errexit' shell flag. Extend test by + checking with `test' utility that the script `install-sh' is + copied, but not symlinked. + * tests/depdist.test: Move setting of `errexit' shell flag earlier + in the script (just after inclusion of ./defs). Avoid obsoleted + constructs in generated `configure.in'. Prefer to do our checks + by running configure and make over grepping Makefile.in. + * tests/target-cflags: Move setting of `errexit' shell flag + earlier in the script (just after inclusion of ./defs). Use the + `configure.in' stub created by `./defs', rather than writing it + from scratch. + * tests/target-clash: Do not uselessly run autoconf. + * tests/ctarget1.test: Renamed ... + * tests/cond1.test: ... to this. Use the `configure.in' stub + created by `./defs', rather than writing it from scratch. + Move setting of `errexit' shell flag earlier in the script (just + after inclusion of ./defs). Other minor cosmetic changes. + * tests/Makefile.am (TESTS): Updated. + 2010-09-08 Stefano Lattarini <stefano.lattar...@gmail.com> Do not require "gzip" explicitly in tests. diff --git a/tests/Makefile.am b/tests/Makefile.am index 58103cc..205a520 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -162,6 +162,7 @@ compile2.test \ compile_f90_c_cxx.test \ compile_f_c_cxx.test \ cond.test \ +cond1.test \ cond2.test \ cond3.test \ cond4.test \ @@ -233,7 +234,6 @@ confsub.test \ confvar.test \ confvar2.test \ copy.test \ -ctarget1.test \ cxx.test \ cxx2.test \ cxxansi.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index e967caa..493d6bb 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -400,6 +400,7 @@ compile2.test \ compile_f90_c_cxx.test \ compile_f_c_cxx.test \ cond.test \ +cond1.test \ cond2.test \ cond3.test \ cond4.test \ @@ -471,7 +472,6 @@ confsub.test \ confvar.test \ confvar2.test \ copy.test \ -ctarget1.test \ cxx.test \ cxx2.test \ cxxansi.test \ diff --git a/tests/ctarget1.test b/tests/cond1.test similarity index 81% rename from tests/ctarget1.test rename to tests/cond1.test index d2191f6..0609ec1 100755 --- a/tests/ctarget1.test +++ b/tests/cond1.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2010 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 @@ -18,11 +18,11 @@ . ./defs || Exit 1 -cat > configure.in << 'END' -AC_INIT -AM_INIT_AUTOMAKE(nonesuch, nonesuch) -AM_CONDITIONAL(TEST, true) -AC_OUTPUT(Makefile) +set -e + +cat >> configure.in << 'END' +AM_CONDITIONAL([TEST], [true]) +AC_OUTPUT END cat > Makefile.am << 'END' @@ -34,11 +34,11 @@ target: false endif END -set -e - -$ACLOCAL || Exit 1 +$ACLOCAL $AUTOMAKE + grep '^...@test_true@target: true' Makefile.in grep '^...@test_true@ action' Makefile.in grep '^...@test_false@target: false' Makefile.in -Exit 0 + +: diff --git a/tests/copy.test b/tests/copy.test index 770ae51..e4199a1 100755 --- a/tests/copy.test +++ b/tests/copy.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 1999, 2001, 2002, 2010 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 @@ -18,8 +18,15 @@ . ./defs || Exit 1 +set -e + : > Makefile.am rm -f install-sh -$ACLOCAL || Exit 1 +$ACLOCAL $AUTOMAKE -c -a + +test -f install-sh +test ! -h install-sh + +: diff --git a/tests/depdist.test b/tests/depdist.test index f36eb47..c670cb8 100755 --- a/tests/depdist.test +++ b/tests/depdist.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2010 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 @@ -17,40 +17,60 @@ # Make sure depcomp is found for the distribution. # From Eric Magnien. +required=gcc # FIXME: any C compiler should be ok! . ./defs || Exit 1 +set -e + rm -f configure.in mkdir config for i in *; do - if test $i != "config"; then - mv $i config + if test "$i" != "config"; then + mv -f "$i" config fi done -cat > configure.in << 'END' -AC_INIT(subdir/foo.c) -AC_CONFIG_AUX_DIR(config) -AM_INIT_AUTOMAKE(nonesuch, nonesuch) +cat > configure.in << END +AC_INIT([$me], [1.0]) +AC_CONFIG_AUX_DIR([config]) +AM_INIT_AUTOMAKE AC_PROG_CC -AC_OUTPUT(subdir/Makefile Makefile) +AC_CONFIG_FILES([subdir/Makefile Makefile]) +AC_OUTPUT END cat > Makefile.am << 'END' SUBDIRS = subdir +check-local: test1 test2 +.PHONY: test1 test2 +test1: + echo ' ' $(DIST_COMMON) ' ' | grep '[ /]config/depcomp ' +test2: distdir + ls -l $(distdir)/* + test -f $(distdir)/config/depcomp END mkdir subdir -: > subdir/foo.c +cat > subdir/foo.c << 'END' +int main(void) +{ + return 0; +} +END cat > subdir/Makefile.am << 'END' bin_PROGRAMS = foo foo_SOURCES = foo.c END -set -e - $ACLOCAL -$AUTOMAKE --add-missing $AUTOCONF -grep config/depcomp Makefile.in +$AUTOMAKE --add-missing + +./configure + +$MAKE check +$MAKE distcheck + +: diff --git a/tests/stamph2.test b/tests/stamph2.test index cb96d27..aa07743 100755 --- a/tests/stamph2.test +++ b/tests/stamph2.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2010 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 @@ -20,14 +20,14 @@ set -e cat >> configure.in << END -AM_CONFIG_HEADER(1.h - 2.h:config.hin - 3.h:sdir1/config1.hin) +AM_CONFIG_HEADER([1.h + 2.h:config.hin + 3.h:sdir1/config1.hin]) # AM_CONFIG_HEADER and AC_CONFIG_HEADERS should be synonyms. -AC_CONFIG_HEADERS(sdir1/4.h - sdir1/5.h:config.hin - sdir1/6.h:sdir1/config1.hin - sdir1/7.h:sdir2/config2.hin) +AC_CONFIG_HEADERS([sdir1/4.h + sdir1/5.h:config.hin + sdir1/6.h:sdir1/config1.hin + sdir1/7.h:sdir2/config2.hin]) AC_OUTPUT END @@ -68,4 +68,4 @@ test ! -f sdir1/stamp-h5 test ! -f sdir1/stamp-h6 test -f sdir1/stamp-h7 -Exit 0 +: diff --git a/tests/syntax.test b/tests/syntax.test index 505486f..3b2a4e5 100755 --- a/tests/syntax.test +++ b/tests/syntax.test @@ -1,5 +1,6 @@ #! /bin/sh -# Copyright (C) 1998, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1998, 2001, 2002, 2003, 2010 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 @@ -28,4 +29,6 @@ END $ACLOCAL AUTOMAKE_fails -grep 'Makefile.am:2:.*blank line' stderr +grep 'Makefile\.am:2:.*blank line' stderr + +: diff --git a/tests/target-cflags.test b/tests/target-cflags.test index b324568..f3ac9cc 100755 --- a/tests/target-cflags.test +++ b/tests/target-cflags.test @@ -21,12 +21,12 @@ required=gcc . ./defs || Exit 1 -cat > configure.in << 'END' -AC_INIT(foo.c) -AM_INIT_AUTOMAKE(target-cflags,0.0) +set -e + +cat >> configure.in << 'END' AC_PROG_CC AM_PROG_CC_C_O -AC_OUTPUT(Makefile) +AC_OUTPUT END cat > Makefile.am << 'END' @@ -54,8 +54,6 @@ int main(void) #endif END -set -e - $ACLOCAL $AUTOCONF $AUTOMAKE -a @@ -72,3 +70,5 @@ cd .. $MAKE ./foo ./bar + +: diff --git a/tests/targetclash.test b/tests/targetclash.test index 0433b41..87e37a8 100755 --- a/tests/targetclash.test +++ b/tests/targetclash.test @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2010 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 @@ -30,6 +30,7 @@ bin_PROGRAMS = ctags END $ACLOCAL -$AUTOCONF AUTOMAKE_fails -a grep 'redefinition.*ctags' stderr + +: -- 1.7.1