[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FYI] {testsuite-work} tests: split 'subst2.test' to improve modularity
From: |
Stefano Lattarini |
Subject: |
[FYI] {testsuite-work} tests: split 'subst2.test' to improve modularity and coverage |
Date: |
Thu, 26 May 2011 22:43:11 +0200 |
User-agent: |
KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; ) |
* tests/subst2.test: Test removed, split into ...
* tests/programs-primary-rewritten.test: ... this test ...
* tests/subst-no-trailing-empty-line.test: ... and this one ...
* tests/extra-programs-empty.test: ... and this one.
* tests/Makefile.am (TESTS): Update.
---
ChangeLog | 9 ++
tests/Makefile.am | 4 +-
tests/Makefile.in | 4 +-
tests/{subst2.test => extra-programs-empty.test} | 44 +++++-----
...subst2.test => programs-primary-rewritten.test} | 50 +++++++-----
tests/subst-no-trailing-empty-line.test | 89 ++++++++++++++++++++
6 files changed, 155 insertions(+), 45 deletions(-)
copy tests/{subst2.test => extra-programs-empty.test} (52%)
rename tests/{subst2.test => programs-primary-rewritten.test} (55%)
create mode 100755 tests/subst-no-trailing-empty-line.test
diff --git a/ChangeLog b/ChangeLog
index 62c6ca4..24183b7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2011-05-26 Stefano Lattarini <address@hidden>
+ tests: split 'subst2.test' to improve modularity and coverage
+ * tests/subst2.test: Test removed, split into ...
+ * tests/programs-primary-rewritten.test: ... this test ...
+ * tests/subst-no-trailing-empty-line.test: ... and this one ...
+ * tests/extra-programs-empty.test: ... and this one.
+ * tests/Makefile.am (TESTS): Update.
+
+2011-05-26 Stefano Lattarini <address@hidden>
+
tests: tweak and improve tests on Automake conditionals
The "avoid the requirement of a working compiler" we refer about
below is obtained by disabling automatic dependency tracking and
diff --git a/tests/Makefile.am b/tests/Makefile.am
index bcb65d8..09adc65 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -461,6 +461,7 @@ extra9.test \
extra10.test \
extra11.test \
extra12.test \
+extra-programs-empty.test \
extradep.test \
extradep2.test \
f90only.test \
@@ -792,6 +793,7 @@ primary.test \
primary2.test \
primary3.test \
proginst.test \
+programs-primary-rewritten.test \
python.test \
python2.test \
python3.test \
@@ -939,10 +941,10 @@ subpkg2.test \
subpkg3.test \
subpkg4.test \
subst.test \
-subst2.test \
subst3.test \
subst4.test \
subst5.test \
+subst-no-trailing-empty-line.test \
substref.test \
substre2.test \
substtarg.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 107b359..ad8b2c0 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -726,6 +726,7 @@ extra9.test \
extra10.test \
extra11.test \
extra12.test \
+extra-programs-empty.test \
extradep.test \
extradep2.test \
f90only.test \
@@ -1057,6 +1058,7 @@ primary.test \
primary2.test \
primary3.test \
proginst.test \
+programs-primary-rewritten.test \
python.test \
python2.test \
python3.test \
@@ -1204,10 +1206,10 @@ subpkg2.test \
subpkg3.test \
subpkg4.test \
subst.test \
-subst2.test \
subst3.test \
subst4.test \
subst5.test \
+subst-no-trailing-empty-line.test \
substref.test \
substre2.test \
substtarg.test \
diff --git a/tests/subst2.test b/tests/extra-programs-empty.test
similarity index 52%
copy from tests/subst2.test
copy to tests/extra-programs-empty.test
index d64d8c0..992c5ee 100755
--- a/tests/subst2.test
+++ b/tests/extra-programs-empty.test
@@ -14,40 +14,40 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Make sure a multi-line definition cannot be terminated by an empty
-# line (when there are @substitutions@ inside).
+# Test that EXTRA_PROGRAMS doesn't get removed because it is empty.
+# This check hs been introduced in commit `Release-1-9-254-g9d0eaef'
+# into the former test `subst2.test'.
-required=cc
. ./defs || Exit 1
cat >> configure.in << 'END'
+AC_CONFIG_FILES([Makefile2 Makefile3])
+AC_SUBST([prog])
AC_PROG_CC
-AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWX])
-AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWXY])
-AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWXYZ])
AC_OUTPUT
END
-cat >Makefile.am <<'END'
-bin_PROGRAMS = x @ABCDEFGHIJKLMNOPQRSTUVWX@ @ABCDEFGHIJKLMNOPQRSTUVWXY@
@ABCDEFGHIJKLMNOPQRSTUVWXYZ@
+cat > Makefile.am <<'END'
EXTRA_PROGRAMS =
+END
-EXEEXT = .bin
+cat > Makefile2.am <<'END'
+bin_PROGRAMS = a @prog@ b
+EXTRA_PROGRAMS =
+END
-print-programs:
- @echo BEG: $(bin_PROGRAMS) :END
+cat > Makefile3.am <<'END'
+empty =
+EXTRA_PROGRAMS = $(empty)
END
$ACLOCAL
-$AUTOCONF
$AUTOMAKE
-./configure
-EXEEXT=.bin $MAKE print-programs >foo
-cat foo
-grep 'BEG: x.bin :END' foo
-EXEEXT=.bin am__empty=X $MAKE -e print-programs >foo
-cat foo
-grep 'BEG: x.bin X :END' foo
-
-# Test for another bug, where EXTRA_PROGRAMS was removed because it was empty.
-grep EXTRA_PROGRAMS Makefile.in
+
+grep '^EXTRA_PROGRAMS = *$' Makefile.in
+grep '^EXTRA_PROGRAMS = *$' Makefile2.in
+# Be laxer here, since EXTRA_PROGRAMS might be internally rewritten
+# by Automake when it contains references to other variables.
+grep '^EXTRA_PROGRAMS =' Makefile3.in
+
+:
diff --git a/tests/subst2.test b/tests/programs-primary-rewritten.test
similarity index 55%
rename from tests/subst2.test
rename to tests/programs-primary-rewritten.test
index d64d8c0..e52bd56 100755
--- a/tests/subst2.test
+++ b/tests/programs-primary-rewritten.test
@@ -14,40 +14,48 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Make sure a multi-line definition cannot be terminated by an empty
-# line (when there are @substitutions@ inside).
+# Make sure xxx_PROGRAMS gets properly rewritten where needed. These
+# checks have been introduced in commit `Release-1-9-254-g9d0eaef' into
+# the former test `subst2.test'.
-required=cc
. ./defs || Exit 1
cat >> configure.in << 'END'
-AC_PROG_CC
-AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWX])
-AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWXY])
-AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWXYZ])
+AC_SUBST([FOO], [c])
AC_OUTPUT
END
cat >Makefile.am <<'END'
-bin_PROGRAMS = x @ABCDEFGHIJKLMNOPQRSTUVWX@ @ABCDEFGHIJKLMNOPQRSTUVWXY@
@ABCDEFGHIJKLMNOPQRSTUVWXYZ@
+AUTOMAKE_OPTIONS = no-dependencies
+CC = false
+EXEEXT = .bin
+
+check_PROGRAMS = a
+bin_PROGRAMS = b @FOO@
+noinst_PROGRAMS = $(bar) $(baz:=de)
EXTRA_PROGRAMS =
-EXEEXT = .bin
+bar = zardoz
+baz = mau
-print-programs:
- @echo BEG: $(bin_PROGRAMS) :END
+.PHONY: test
+test:
+ test '$(check_PROGRAMS)' = a.bin
+ test '$(bin_PROGRAMS)' = 'b.bin c'
+ test '$(noinst_PROGRAMS)' = 'zardoz.bin maude.bin'
END
$ACLOCAL
-$AUTOCONF
$AUTOMAKE
+
+grep PROGRAMS Makefile.in # For debugging.
+
+# Check that no useless indirections are used.
+grep '^check_PROGRAMS = a$(EXEEXT)$' Makefile.in
+grep '^bin_PROGRAMS = b$(EXEEXT) @address@hidden' Makefile.in
+
+$AUTOCONF
./configure
-EXEEXT=.bin $MAKE print-programs >foo
-cat foo
-grep 'BEG: x.bin :END' foo
-EXEEXT=.bin am__empty=X $MAKE -e print-programs >foo
-cat foo
-grep 'BEG: x.bin X :END' foo
-
-# Test for another bug, where EXTRA_PROGRAMS was removed because it was empty.
-grep EXTRA_PROGRAMS Makefile.in
+$MAKE test
+
+:
diff --git a/tests/subst-no-trailing-empty-line.test
b/tests/subst-no-trailing-empty-line.test
new file mode 100755
index 0000000..595644e
--- /dev/null
+++ b/tests/subst-no-trailing-empty-line.test
@@ -0,0 +1,89 @@
+#! /bin/sh
+# Copyright (C) 2003, 2006, 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/>.
+
+# If the last line of a automake-rewritten definition is made only of
+# @substitutions@, automake should take care of appending an empty
+# variable to make sure that line cannot end up substituted as a blank
+# line (that would confuse HP-UX Make).
+# These checks have been introduced in commit `Release-1-9-254-g9d0eaef'
+# into the former test `subst2.test'.
+
+. ./defs || Exit 1
+
+v1=ABCDEFGHIJKLMNOPQRSTUVWX
+v2=ABCDEFGHIJKLMNOPQRSTUVWXY
+v3=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+bs='\\' # Literal backslash for grep.
+
+cat >> configure.in <<END
+AC_SUBST([A], [''])
+# These are deliberately quite long, so that the xxx_PROGRAMS definition
+# in Makefile.am below will be split on multiple lines, with the last
+# line
+AC_SUBST([$v1], [''])
+AC_SUBST([$v2], [''])
+AC_SUBST([$v3], [''])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<END
+AUTOMAKE_OPTIONS = no-dependencies
+CC = false
+EXEEXT =
+
+noinst_PROGRAMS = x @$v1@ @$v2@ @$v3@
+bin_PROGRAMS = @A@ mu @$v2@ @$v3@
+check_PROGRAMS = zardoz \$(noinst_PROGRAMS)
+
+## Required whenever there are @substituted@ values in the
+## PROGRAMS primary, otherwise automake will complain.
+EXTRA_PROGRAMS =
+
+print-programs:
+ @echo BEG1: \$(noinst_PROGRAMS) :END1
+ @echo BEG2: \$(bin_PROGRAMS) :END2
+ @echo BEG3: \$(check_PROGRAMS) :END3
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+$EGREP -n 'ABCD|am__empty' Makefile.in # For debugging,
+# Sanity check.
+test `$EGREP -c "^[ address@hidden@ @address@hidden $tab]*$bs?$" Makefile.in`
-eq 2
+
+./configure
+{
+ sed -n '/^noinst_PROGRAMS =/,/[^\\]$/p' Makefile
+ sed -n '/^bin_PROGRAMS =/,/[^\\]$/p' Makefile
+ sed -n '/^check_PROGRAMS =/,/[^\\]$/p' Makefile
+} >t-programs
+cat t-programs
+grep '^ *$' t-programs && Exit 1
+
+$MAKE print-programs >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^BEG1: x :END1$' stdout
+grep '^BEG2: mu :END2$' stdout
+grep '^BEG3: zardoz x :END3$' stdout
+
+am__empty=X $MAKE -e print-programs >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^BEG1: x X :END1$' stdout
+grep '^BEG2: mu X :END2$' stdout
+grep '^BEG3: zardoz x X :END3$' stdout
+
+:
--
1.7.2.3
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [FYI] {testsuite-work} tests: split 'subst2.test' to improve modularity and coverage,
Stefano Lattarini <=