[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FYI] {maint} parallel-tests: don't allow @substitutions@ in TEST_EXTENS
From: |
Stefano Lattarini |
Subject: |
[FYI] {maint} parallel-tests: don't allow @substitutions@ in TEST_EXTENSIONS |
Date: |
Thu, 6 Oct 2011 21:39:08 +0200 |
Even after the last commit `v1.11-476-g90bea64', the checks
performed by automake on entries in $(TEST_EXTENSIONS) tried to
allow for @substitited@ stuff. This however ends up allowing
quite brittle setups, which, most importantly, are of no real
practical usefulness anyway. So it's better to just disallow
@substitutions@ in TEST_EXTENSIONS altogether, offering a clear
error message, instead of risking weird bugs and unexpected
behaviors in the generated Makefile.in.
* automake.in ($TEST_EXTENSION_PATTERN): Turned from a regular
expression ...
(is_valid_test_extension): ... into this subroutine. Don't allow
generic @substitutions@ anymore (possibly making an exception for
address@hidden@' under the proper circumstances).
* tests/test-extensions.test: Adjust and extend.
---
ChangeLog | 18 ++++++++++++++++++
automake.in | 19 +++++++++++++++----
tests/test-extensions.test | 21 +++++++++++----------
3 files changed, 44 insertions(+), 14 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index e52a275..0bd837e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2011-10-06 Stefano Lattarini <address@hidden>
+
+ parallel-tests: don't allow @substitutions@ in TEST_EXTENSIONS
+ Even after the last commit `v1.11-476-g90bea64', the checks
+ performed by automake on entries in $(TEST_EXTENSIONS) tried to
+ allow for @substitited@ stuff. This however ends up allowing
+ quite brittle setups, which, most importantly, are of no real
+ practical usefulness anyway. So it's better to just disallow
+ @substitutions@ in TEST_EXTENSIONS altogether, offering a clear
+ error message, instead of risking weird bugs and unexpected
+ behaviors in the generated Makefile.in.
+ * automake.in ($TEST_EXTENSION_PATTERN): Turned from a regular
+ expression ...
+ (is_valid_test_extension): ... into this subroutine. Don't allow
+ generic @substitutions@ anymore (possibly making an exception for
+ address@hidden@' under the proper circumstances).
+ * tests/test-extensions.test: Adjust and extend.
+
2011-10-01 Stefano Lattarini <address@hidden>
parallel-tests: automake error our on invalid TEST_EXTENSIONS
diff --git a/automake.in b/automake.in
index a60bc9f..ef53049 100755
--- a/automake.in
+++ b/automake.in
@@ -213,8 +213,6 @@ my $DASH_D_PATTERN = "(^|\\s)-d(\\s|\$)";
# Directories installed during 'install-exec' phase.
my $EXEC_DIR_PATTERN =
'^(?:bin|sbin|libexec|sysconf|localstate|lib|pkglib|.*exec.*)' . "\$";
-# Suffixes that can appear in TEST_EXTENSIONS (parallel-tests support).
-my $TEST_EXTENSION_PATTERN = '^(\.[a-zA-Z_][a-zA-Z0-9_]*|@[a-zA-Z0-9_]+@)$';
# Values for AC_CANONICAL_*
use constant AC_CANONICAL_BUILD => 1;
@@ -4929,6 +4927,19 @@ sub handle_tests_dejagnu
$output_rules .= file_contents ('dejagnu', new Automake::Location);
}
+# is_valid_test_extension ($EXT)
+# ------------------------------
+# Return true if $EXT can appear in $(TEST_EXTENSIONS), return false
+# otherwise.
+sub is_valid_test_extension ($)
+{
+ my $ext = shift;
+ return 1
+ if ($ext =~ /^\.[a-zA-Z_][a-zA-Z0-9_]*$/);
+ return 1
+ if (exists $configure_vars{'EXEEXT'} && $ext eq subst ('EXEEXT'));
+ return 0;
+}
# Handle TESTS variable and other checks.
sub handle_tests
@@ -4976,12 +4987,12 @@ sub handle_tests
my $var = rvar 'TEST_EXTENSIONS';
my @test_suffixes = $var->value_as_list_recursive;
if ((my @invalid_test_suffixes =
- grep { !/$TEST_EXTENSION_PATTERN/o } @test_suffixes) > 0)
+ grep { !is_valid_test_extension $_ } @test_suffixes) > 0)
{
error $var->rdef (TRUE)->location,
"invalid test extensions: @invalid_test_suffixes";
}
- @test_suffixes = grep { /$TEST_EXTENSION_PATTERN/o } @test_suffixes;
+ @test_suffixes = grep { is_valid_test_extension $_ } @test_suffixes;
if ($handle_exeext)
{
unshift (@test_suffixes, $at_exeext)
diff --git a/tests/test-extensions.test b/tests/test-extensions.test
index 1d5872c..901d872b 100755
--- a/tests/test-extensions.test
+++ b/tests/test-extensions.test
@@ -24,29 +24,29 @@ parallel_tests=yes
set -e
cat >> configure.in <<'END'
-AC_SUBST([ext], [".e"])
AC_OUTPUT
END
$ACLOCAL
$AUTOCONF
-cat > Makefile.am << 'END'
-TESTS =
-TEST_EXTENSIONS = .sh .T .t1 ._foo .BAR .x_Y_z ._ @ext@
-END
+valid_extensions='sh T t1 _foo BAR x_Y_z _'
+
+echo TESTS = > Makefile.am
+echo " $valid_extensions" \
+ | sed -e 's/ / ./g' -e 's/^/TEST_EXTENSIONS =/' >> Makefile.am
+cat Makefile.am # For debugging.
$AUTOMAKE
-$EGREP -i 'log|ext' Makefile.in # For debugging.
+grep -i 'log' Makefile.in # For debugging.
-for lc in sh T t1 _foo BAR x_Y_z _; do
+for lc in $valid_extensions; do
uc=`echo $lc | tr '[a-z]' '[A-Z]'`
$FGREP "\$(${uc}_LOG_COMPILER)" Makefile.in
grep "^${uc}_LOG_COMPILE =" Makefile.in
grep "^\.${lc}\.log:" Makefile.in
done
-grep "address@hidden@\.log:" Makefile.in
# The produced Makefile is not broken.
./configure
@@ -54,11 +54,12 @@ $MAKE all check
cat > Makefile.am << 'END'
TESTS = foo.test bar.sh
-TEST_EXTENSIONS = .test mu .x-y a-b .t.1 .sh .6c .0 .11 .@ .t33 .a=b _&_
+TEST_EXTENSIONS = .test mu .x-y a-b .t.1 .sh .6c .0 .11 .= @suf@
address@hidden@
+TEST_EXTENSIONS += .= .t33 address@hidden _&_
END
AUTOMAKE_fails
-for suf in mu .x-y a-b .t.1 .6c .0 .11 '.@' '.a=b' '_&_'; do
+for suf in mu .x-y a-b .t.1 .6c .0 .11 @suf@ address@hidden@ '.=' '_&_'; do
suf2=`printf '%s\n' "$suf" | sed -e 's/\./\\./'`
$EGREP "^Makefile\.am:2:.*invalid test extension.* $suf2( |$)" stderr
done
--
1.7.2.3
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [FYI] {maint} parallel-tests: don't allow @substitutions@ in TEST_EXTENSIONS,
Stefano Lattarini <=