From ba0c477b275aaae0e4f77003ac96f4cc2ec12ebf Mon Sep 17 00:00:00 2001 From: Stefano Lattarini Date: Fri, 7 Oct 2011 11:08:15 +0200 Subject: [PATCH] parallel-tests: warn on conditional TEST_EXTENSIONS definition Before this change, automake would have still bailed out, but with a confusing error message (about an invalid redefinition of TEST_EXTENSIONS). * automake.in (handle_tests): Warn explicitly if TEST_EXTENSIONS has conditional contents. * tests/test-extensions-con.test: New test. * tests/Makefile.am (TESTS): Add it. * NEWS: Update. --- ChangeLog | 12 ++++++ NEWS | 11 ++--- automake.in | 15 +++++-- tests/Makefile.am | 1 + tests/Makefile.in | 1 + tests/test-extensions-cond.test | 72 +++++++++++++++++++++++++++++++++ 6 files changed, 104 insertions(+), 8 deletions(-) create mode 100755 tests/test-extensions-cond.test diff --git a/ChangeLog b/ChangeLog index d203a4d5e..171139c40 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2011-10-07 Stefano Lattarini + + parallel-tests: warn on conditional TEST_EXTENSIONS definition + Before this change, automake would have still bailed out, but + with a confusing error message (about an invalid redefinition + of TEST_EXTENSIONS). + * automake.in (handle_tests): Warn explicitly if TEST_EXTENSIONS + has conditional contents. + * tests/test-extensions-con.test: New test. + * tests/Makefile.am (TESTS): Add it. + * NEWS: Update. + 2011-10-06 Stefano Lattarini parallel-tests: don't allow @substitutions@ in TEST_EXTENSIONS diff --git a/NEWS b/NEWS index 4b4a5e8fc..7e30ed095 100644 --- a/NEWS +++ b/NEWS @@ -49,11 +49,12 @@ Bugs fixed in 1.11.0a: does not report spurious successes when used with concurrent FreeBSD make (e.g., "make check -j3"). - - Automake now explicitly rejects invalid entries in TEST_EXTENSIONS when - the parallel-tests diver is in use, instead of issuing confusing and - apparently unrelated error messages (about "non-POSIX variable name" - or "bad characters in variable name"), or even, in some situations, - producing broken `Makefile.in' files. + - When the parallel-tests driver is in use, automake now explicitly + rejects invalid entries and conditional contents in TEST_EXTENSIONS, + instead of issuing confusing and apparently unrelated error messages + (e.g., "non-POSIX variable name", "bad characters in variable name", + or "redefinition of TEST_EXTENSIONS), or even, in some situations, + silently producing broken `Makefile.in' files. - The `silent-rules' option now also silences all compile rules if dependency tracking is disabled. Also, when `silent-rules' is not used, the output from diff --git a/automake.in b/automake.in index 0080df815..516e594c1 100755 --- a/automake.in +++ b/automake.in @@ -4982,9 +4982,18 @@ sub handle_tests $at_exeext = subst ('EXEEXT'); $suff = $at_exeext . ' ' . $suff; } - define_variable ('TEST_EXTENSIONS', $suff, INTERNAL); - # FIXME: this mishandles conditions. - my $var = rvar 'TEST_EXTENSIONS'; + if (! var 'TEST_EXTENSIONS') + { + define_variable ('TEST_EXTENSIONS', $suff, INTERNAL); + } + my $var = var 'TEST_EXTENSIONS'; + # Currently, we are not able to deal with conditional contents + # in TEST_EXTENSIONS. + if ($var->has_conditional_contents) + { + msg_var 'unsupported', $var, + "`TEST_EXTENSIONS' cannot have conditional contents"; + } my @test_suffixes = $var->value_as_list_recursive; if ((my @invalid_test_suffixes = grep { !is_valid_test_extension $_ } @test_suffixes) > 0) diff --git a/tests/Makefile.am b/tests/Makefile.am index bf17aeafc..884ea65a9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -635,6 +635,7 @@ parallel-tests-log-override-2.test \ parallel-tests-log-override-recheck.test \ parallel-tests-log-compiler-example.test \ test-extensions.test \ +test-extensions-cond.test \ parse.test \ percent.test \ percent2.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index f66a9c77a..f1bfcddef 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -919,6 +919,7 @@ parallel-tests-log-override-2.test \ parallel-tests-log-override-recheck.test \ parallel-tests-log-compiler-example.test \ test-extensions.test \ +test-extensions-cond.test \ parse.test \ percent.test \ percent2.test \ diff --git a/tests/test-extensions-cond.test b/tests/test-extensions-cond.test new file mode 100755 index 000000000..26409a890 --- /dev/null +++ b/tests/test-extensions-cond.test @@ -0,0 +1,72 @@ +#! /bin/sh +# Copyright (C) 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 . + +# Expose bug in conditional definition of TEST_EXTENSIONS. + +parallel_tests=yes +. ./defs || Exit 1 + +set -e + +cat >> configure.in << 'END' +AM_CONDITIONAL([COND], [:]) +AM_CONDITIONAL([COND2], [:]) +END + +$ACLOCAL + +cat > 1.am << 'END' +TESTS = +if COND +## lineno 4 +TEST_EXTENSIONS = .foo +endif +END + +cat > 2.am << 'END' +TESTS = +## lineno 3 +TEST_EXTENSIONS = .foo +if COND +# Do nothing. +else +TEST_EXTENSIONS += .bar +endif +END + +cat > 3.am << 'END' +TESTS = +if COND +if !COND2 +TESTS = x +else +## lineno 7 +TEST_EXTENSIONS = .foo +endif +endif +END + +: > test-driver + +for i in 1 2 3; do + AUTOMAKE_fails $i + lineno=`sed -n 's/^## lineno //p' $i.am` \ + && test 0 -lt "$lineno" \ + || Exit 99 + grep "^$i\\.am:$lineno:.*TEST_EXTENSIONS.*conditional content" stderr +done + +: -- 2.47.2