automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FYI] {maint} parallel-tests: warn on conditional TEST_EXTENSIONS defini


From: Stefano Lattarini
Subject: [FYI] {maint} parallel-tests: warn on conditional TEST_EXTENSIONS definition
Date: Fri, 7 Oct 2011 11:33:36 +0200

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 d203a4d..171139c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2011-10-07  Stefano Lattarini  <address@hidden>
+
+       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  <address@hidden>
 
        parallel-tests: don't allow @substitutions@ in TEST_EXTENSIONS
diff --git a/NEWS b/NEWS
index 4b4a5e8..822498a 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 0080df8..d655b69 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
+          # definitions of 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 bf17aea..884ea65 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 f66a9c7..f1bfcdd 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 0000000..26409a8
--- /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 <http://www.gnu.org/licenses/>.
+
+# 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
+
+:
-- 
1.7.2.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]