automake-patches
[Top][All Lists]
Advanced

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

[PATCH] {maint} Extend, fix and improve tests on Lex and Yacc support.


From: Stefano Lattarini
Subject: [PATCH] {maint} Extend, fix and improve tests on Lex and Yacc support.
Date: Thu, 9 Sep 2010 01:40:46 +0200
User-agent: KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; )

A cruder version of this patch have been posted as part of the patch 
series "Lex, Yacc and explicit declarations of dependencies".

However, IMHO it would make sense to include it in the "maint" branch, 
since it offers useful improvements as is, indipendently from the fact
that the patch series mentioned above will ever be applied or not.

So... OK for maint?

Regards,
   Stefano
From 380635a5e718bfcf8497e587a0167f41723abad8 Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Fri, 7 May 2010 15:07:37 +0200
Subject: [PATCH] Extend, fix and improve tests on Lex and Yacc support.

* tests/lexcpp.test: New test script, on support for Lex + C++.
* tests/lexvpath.test: New test script, test build and rebuild
rules for lexers in VPATH setup.
* tests/yacc1.test: New test scripte, run simple "semantic"
checks on basic Yacc support (similarly to what lex3.test does
for Lex support).
* tests/lex.test: Don't create useless dummy source file joe.l.
Remove extra blank lines.
(Makefile.am): Remove useless definition of $(LDADD).
* tests/lex4.test: Add trailing `:' command.  Do not create dummy
useless lex source file.
* tests/lex2.test: Likewise.  Call automake with the `-a' option,
so that it doesn't fail for the absence of `ylwrap' script.  Make
grepping of automake stderr stricter.
* tests/yacc7.test: Add trailing `:' command.  Enable `errexit'
shell flag earlier (just after having sourced ./defs).
* tests/yacc4.test: Likewise.  Also ...
(configure.in): Use pre-populated skeleton set up by ./defs,
instead of writing one from scratch.
Other minor cosmetic changes.
* tests/yacc5.test: Likewise.
* tests/yaccvpath.test: Likewise. Also ...
($distdir): New variable.
Use it throughout.
* tests/lex5.test: Likewise.
* tests/lex3.test: Likewise.  Check the distdir, rather than
grepping the distribution tarball.  Extend the test on the
created binary, and be sure to avoid hangs.  Add some comments.
* tests/yacc.test: Use stricter grepping.  Add trailing `:'.
* tests/yacc6.test: Likewise.
* tests/yacc3.test: Likewise.  Prefer `cp -f' over plain `cp'.
Do not create unused file `Makefile.sed'.  Remove useless rules
from Makefile.am.  Other minor cosmetic changes.
* tests/yacc2.test: Make grepping of generated `Makefile.in' and
of automake error messages stricter.  Do not redirect output of
grep to /dev/null.  Prefer `cp -f' over plain `cp'.  Move call to
aclocal earlier.  Reduce the number of empty blank lines.
* tests/yacc8.test: Fixed bugs that reduced the completeness of
the tests.  Added trailing `:' command.
(configure.in): Use pre-populated skeleton set up by ./defs,
instead of writing one from scratch.
* tests/yaccpp.test: Test also extensions `.y++', `.ypp', and
`.yxx', rather than only `.yy'.
* tests/defs.in ($required): Better recognition of requirement
"flex".
* tests/Makefile.am (TESTS): Update.
---
 ChangeLog            |   50 +++++++++++++++++++++
 tests/Makefile.am    |    3 +
 tests/Makefile.in    |    3 +
 tests/defs.in        |    7 +++
 tests/lex.test       |    6 ---
 tests/lex2.test      |    9 ++--
 tests/lex3.test      |   46 +++++++++++---------
 tests/lex4.test      |    7 ++-
 tests/lex5.test      |   17 ++-----
 tests/lexcpp.test    |   46 ++++++++++++++++++++
 tests/lexvpath.test  |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/yacc.test      |    7 ++-
 tests/yacc1.test     |   78 +++++++++++++++++++++++++++++++++
 tests/yacc2.test     |   48 ++++++++-------------
 tests/yacc3.test     |   17 +++----
 tests/yacc4.test     |   18 +++-----
 tests/yacc5.test     |   13 +++---
 tests/yacc6.test     |   14 +++---
 tests/yacc7.test     |   10 +++--
 tests/yacc8.test     |   24 +++++-----
 tests/yaccpp.test    |   21 +++++++--
 tests/yaccvpath.test |   27 ++++++------
 22 files changed, 442 insertions(+), 146 deletions(-)
 create mode 100755 tests/lexcpp.test
 create mode 100755 tests/lexvpath.test
 create mode 100755 tests/yacc1.test

diff --git a/ChangeLog b/ChangeLog
index 9444b66..0a105e6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,53 @@
+2010-09-09  Stefano Lattarini  <address@hidden>
+
+       Extend, fix and improve tests on Lex and Yacc support.
+       * tests/lexcpp.test: New test script, on support for Lex + C++.
+       * tests/lexvpath.test: New test script, test build and rebuild
+       rules for lexers in VPATH setup.
+       * tests/yacc1.test: New test scripte, run simple "semantic"
+       checks on basic Yacc support (similarly to what lex3.test does
+       for Lex support).
+       * tests/lex.test: Don't create useless dummy source file joe.l.
+       Remove extra blank lines.
+       (Makefile.am): Remove useless definition of $(LDADD).
+       * tests/lex4.test: Add trailing `:' command.  Do not create dummy
+       useless lex source file.
+       * tests/lex2.test: Likewise.  Call automake with the `-a' option,
+       so that it doesn't fail for the absence of `ylwrap' script.  Make
+       grepping of automake stderr stricter.
+       * tests/yacc7.test: Add trailing `:' command.  Enable `errexit'
+       shell flag earlier (just after having sourced ./defs).
+       * tests/yacc4.test: Likewise.  Also ...
+       (configure.in): Use pre-populated skeleton set up by ./defs,
+       instead of writing one from scratch.
+       Other minor cosmetic changes.
+       * tests/yacc5.test: Likewise.
+       * tests/yaccvpath.test: Likewise. Also ...
+       ($distdir): New variable.
+       Use it throughout.
+       * tests/lex5.test: Likewise.
+       * tests/lex3.test: Likewise.  Check the distdir, rather than
+       grepping the distribution tarball.  Extend the test on the
+       created binary, and be sure to avoid hangs.  Add some comments.
+       * tests/yacc.test: Use stricter grepping.  Add trailing `:'.
+       * tests/yacc6.test: Likewise.
+       * tests/yacc3.test: Likewise.  Prefer `cp -f' over plain `cp'.
+       Do not create unused file `Makefile.sed'.  Remove useless rules
+       from Makefile.am.  Other minor cosmetic changes.
+       * tests/yacc2.test: Make grepping of generated `Makefile.in' and
+       of automake error messages stricter.  Do not redirect output of
+       grep to /dev/null.  Prefer `cp -f' over plain `cp'.  Move call to
+       aclocal earlier.  Reduce the number of empty blank lines.
+       * tests/yacc8.test: Fixed bugs that reduced the completeness of
+       the tests.  Added trailing `:' command.
+       (configure.in): Use pre-populated skeleton set up by ./defs,
+       instead of writing one from scratch.
+       * tests/yaccpp.test: Test also extensions `.y++', `.ypp', and
+       `.yxx', rather than only `.yy'.
+       * tests/defs.in ($required): Better recognition of requirement
+       "flex".
+       * tests/Makefile.am (TESTS): Update.
+
 2010-09-08  Stefano Lattarini  <address@hidden>
 
        Make some `confh*.test' tests more "semantic" (plus tweakings).
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 58103cc..9f8dcd5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -398,6 +398,8 @@ lex2.test \
 lex3.test \
 lex4.test \
 lex5.test \
+lexcpp.test \
+lexvpath.test \
 lflags.test \
 lflags2.test \
 libexec.test \
@@ -767,6 +769,7 @@ whoami.test \
 xsource.test \
 xz.test \
 yacc.test \
+yacc1.test \
 yacc2.test \
 yacc3.test \
 yacc4.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index e967caa..04bc56b 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -636,6 +636,8 @@ lex2.test \
 lex3.test \
 lex4.test \
 lex5.test \
+lexcpp.test \
+lexvpath.test \
 lflags.test \
 lflags2.test \
 libexec.test \
@@ -1005,6 +1007,7 @@ whoami.test \
 xsource.test \
 xz.test \
 yacc.test \
+yacc1.test \
 yacc2.test \
 yacc3.test \
 yacc4.test \
diff --git a/tests/defs.in b/tests/defs.in
index 1744a07..e0107b1 100644
--- a/tests/defs.in
+++ b/tests/defs.in
@@ -110,6 +110,13 @@ do
       echo "$me: running etags --version -o /dev/null"
       ( etags --version -o /dev/null ) || exit 77
       ;;
+    flex)
+      # Since flex is required, we pick LEX for ./configure.
+      LEX='flex'
+      export LEX
+      echo "$me: running flex --version"
+      ( flex --version ) || exit 77
+      ;;
     GNUmake)
       # Use --version AND -v, because SGI Make doesn't fail on --version.
       # Also grep for GNU because newer versions of FreeBSD make do
diff --git a/tests/lex.test b/tests/lex.test
index c59c4e3..6f00137 100755
--- a/tests/lex.test
+++ b/tests/lex.test
@@ -26,22 +26,16 @@ END
 cat > Makefile.am << 'END'
 bin_PROGRAMS = zot
 zot_SOURCES = joe.l
-LDADD = @LEXLIB@
 END
 
-: > joe.l
-
 $ACLOCAL
 $AUTOMAKE -a
 
-
 # Test to make sure that lex source generates correct target.
-
 $FGREP '$(LEX)' Makefile.in
 
 # Test to make sure that lex source generates correct clean rule.
 # From Ralf Corsepius.
-
 $FGREP joel Makefile.in && Exit 1
 
 :
diff --git a/tests/lex2.test b/tests/lex2.test
index d588edf..d7499e1 100755
--- a/tests/lex2.test
+++ b/tests/lex2.test
@@ -29,8 +29,9 @@ bin_PROGRAMS = zot
 zot_SOURCES = joe.l
 END
 
-: > joe.l
-
 $ACLOCAL
-AUTOMAKE_fails
-grep AM_PROG_LEX stderr
+AUTOMAKE_fails -a
+grep 'LEX.* undefined' stderr
+grep 'add .*AM_PROG_LEX' stderr
+
+:
diff --git a/tests/lex3.test b/tests/lex3.test
index 178a54f..3cc5bc8 100755
--- a/tests/lex3.test
+++ b/tests/lex3.test
@@ -15,27 +15,25 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# Basic semantic checks on Lex support.
 # Test associated with PR 19.
 # From Matthew D. Langston.
 
 required='gcc gzip flex GNUmake'
 . ./defs || Exit 1
 
+set -e
+
 # Ignore user CFLAGS.
 CFLAGS=
 export CFLAGS
 
-cat > configure.in << 'END'
-AC_INIT
-dnl Prevent automake from looking in .. and ../..
-AC_CONFIG_AUX_DIR(.)
-AM_INIT_AUTOMAKE(am_lex_bug, 0.1.1)
+distdir=$me-1.0
 
-dnl Checks for programs.
+cat >> configure.in << 'END'
 AC_PROG_CC
 AM_PROG_LEX
-AC_PROG_YACC
-AC_OUTPUT(Makefile)
+AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
@@ -46,38 +44,44 @@ END
 
 cat > foo.l << 'END'
 %%
-"END"   return EOF;
+"GOOD"   return EOF;
 .
 %%
 int
 main ()
 {
-  while (yylex () != EOF)
-    ;
-
-  return 0;
+  if (yylex () == EOF)
+    return 0;
+  else
+    return 1;
 }
 END
 
-set -e
-
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE -a
+
 ./configure
+
+# Program should build and run.
 $MAKE
-echo 'This is the END' | ./foo
-$MAKE distcheck
+echo GOOD | ./foo
+echo BAD | ./foo && Exit 1
+
+# The generated file `foo.c' must be shipped.
+$MAKE distdir
+test -f $distdir/foo.c
 
-# foo.c must be shipped.
-gunzip am_lex_bug-0.1.1.tar.gz
-tar tf am_lex_bug-0.1.1.tar | $FGREP foo.c
+# Sanity check on distribution.
+$MAKE distcheck
 
 # While we are at it, make sure that foo.c is erased by
 # maintainer-clean, and not by distclean.
 test -f foo.c
 $MAKE distclean
 test -f foo.c
-./configure
+./configure # we must re-create `Makefile'
 $MAKE maintainer-clean
 test ! -f foo.c
+
+:
diff --git a/tests/lex4.test b/tests/lex4.test
index fee140d..b171160 100755
--- a/tests/lex4.test
+++ b/tests/lex4.test
@@ -1,5 +1,6 @@
 #! /bin/sh
-# Copyright (C) 1999, 2001, 2002, 2006  Free Software Foundation, Inc.
+# Copyright (C) 1999, 2001, 2002, 2006, 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
@@ -32,9 +33,9 @@ bin_PROGRAMS = zoo
 zoo_SOURCES = joe.ll
 END
 
-: > joe.ll
-
 $ACLOCAL
 $AUTOMAKE -a
 
 $FGREP joe.Po Makefile.in
+
+:
diff --git a/tests/lex5.test b/tests/lex5.test
index 88924b2..d41f6eb 100755
--- a/tests/lex5.test
+++ b/tests/lex5.test
@@ -21,11 +21,7 @@ required='gcc GNUmake flex'
 
 set -e
 
-cat > configure.in << 'END'
-AC_INIT([lex5], [1.0])
-AC_CONFIG_AUX_DIR([.])
-AM_INIT_AUTOMAKE
-AC_CONFIG_FILES([Makefile])
+cat >> configure.in << 'END'
 AC_PROG_CC
 AM_PROG_CC_C_O
 AM_PROG_LEX
@@ -33,10 +29,9 @@ AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
-AUTOMAKE_OPTIONS  = subdir-objects
-LDADD             = @LEXLIB@
-
-bin_PROGRAMS    = foo/foo
+AUTOMAKE_OPTIONS = subdir-objects
+LDADD = @LEXLIB@
+bin_PROGRAMS = foo/foo
 foo_foo_SOURCES = foo/foo.l
 END
 
@@ -57,8 +52,6 @@ main ()
 }
 END
 
-set -e
-
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE -a
@@ -96,4 +89,4 @@ $MAKE foo/foo2.o
 test -f foo/foo2.c
 test -f foo/foo2.o
 
-Exit 0
+:
diff --git a/tests/lexcpp.test b/tests/lexcpp.test
new file mode 100755
index 0000000..b95b5f1
--- /dev/null
+++ b/tests/lexcpp.test
@@ -0,0 +1,46 @@
+#! /bin/sh
+# Copyright (C) 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
+# 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/>.
+
+# Test to make sure Lex + C++ is supported.
+# Please keep this is sync with sister test yaccpp.test.
+
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_PROG_CXX
+AC_PROG_LEX
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo bar baz qux
+foo_SOURCES = foo.l++
+bar_SOURCES = bar.lpp
+baz_SOURCES = baz.ll
+qux_SOURCES = qux.lxx
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+sed -e 's/^/ /' -e 's/$/ /' Makefile.in >mk
+$FGREP ' foo.c++ ' mk
+$FGREP ' bar.cpp ' mk
+$FGREP ' baz.cc '  mk
+$FGREP ' qux.cxx ' mk
+
+:
diff --git a/tests/lexvpath.test b/tests/lexvpath.test
new file mode 100755
index 0000000..a509f2c
--- /dev/null
+++ b/tests/lexvpath.test
@@ -0,0 +1,117 @@
+#! /bin/sh
+# Copyright (C) 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
+# 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/>.
+
+# This test checks that dependent files are updated before including
+# in the distribution. `lexer.c' depends on `lexer.l'. The later is
+# updated so that `lexer.c' should be rebuild. Then we are running
+# `make' and `make distdir' and check whether the version of `lexer.c'
+# to be distributed is up to date.
+
+# Please keep this in sync with sister test `yaccvapth.test'.
+
+required='gcc flex'
+. ./defs || Exit 1
+
+set -e
+
+distdir=$me-1.0
+
+cat > lexoutroot.in << 'END'
+LEX_OUTPUT_ROOT='@LEX_OUTPUT_ROOT@'
+END
+
+cat >> configure.in << 'END'
+AC_CONFIG_FILES([lexoutroot])
+AC_PROG_CC
+AC_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = lexer.l foo.c
+LDADD = $(LEXLIB)
+END
+
+# Original lexer, with a "foobar" comment
+cat > lexer.l << 'END'
+%%
+"END" return EOF;
+.
+%%
+/*foobar*/
+END
+
+cat > foo.c << 'END'
+int main () { return 0; }
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+mkdir sub
+
+# We must run configure early, to find out whay $LEX_OUTPUT_ROOT is.
+cd sub
+../configure
+. ./lexoutroot
+test -n "$LEX_OUTPUT_ROOT"
+cd ..
+
+$LEX lexer.l
+mv "$LEX_OUTPUT_ROOT".c lexer.c
+
+cd sub
+
+# A delay is needed to make sure that the new lexer.l is indeed newer
+# than lexer.c, i.e. the they don't have the same timestamp.
+$sleep
+
+# New lexer, with `fubar' comment.
+cat > ../lexer.l << 'END'
+%%
+"END" return EOF;
+.
+%%
+/*fubar*/
+END
+
+$MAKE
+$MAKE distdir
+$FGREP '/*fubar*/' $distdir/lexer.c
+
+#
+# Now check to make sure that `make dist' will rebuild the parser.
+#
+
+# A delay is needed to make sure that the new parse.y is indeed newer
+# than parse.c, i.e. the they don't have the same timestamp.
+$sleep
+
+# New lexer, with `maude' comment.
+cat > ../lexer.l << 'END'
+%%
+"END" return EOF;
+.
+%%
+/*maude*/
+END
+
+$MAKE distdir
+$FGREP '/*maude*/' $distdir/lexer.c
+
+:
diff --git a/tests/yacc.test b/tests/yacc.test
index bf6782f..13b7fe3 100755
--- a/tests/yacc.test
+++ b/tests/yacc.test
@@ -1,5 +1,6 @@
 #! /bin/sh
-# Copyright (C) 1996, 2001, 2002, 2006  Free Software Foundation, Inc.
+# Copyright (C) 1996, 2001, 2002, 2006, 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
@@ -34,4 +35,6 @@ END
 $ACLOCAL
 $AUTOMAKE -a
 
-grep 'zardoz.c' Makefile.in
+$FGREP 'zardoz.c' Makefile.in
+
+:
diff --git a/tests/yacc1.test b/tests/yacc1.test
new file mode 100755
index 0000000..743bc51
--- /dev/null
+++ b/tests/yacc1.test
@@ -0,0 +1,78 @@
+#! /bin/sh
+# 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
+# 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/>.
+
+# Basic semantic checks on Yacc support.
+
+required='bison gcc'
+. ./defs || Exit 1
+
+set -e
+
+distdir=$me-1.0
+
+cat >> configure.in << 'END'
+AC_PROG_CC
+AC_PROG_YACC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = parse.y foo.c
+END
+
+cat > parse.y << 'END'
+%{
+#include <stdio.h>
+#include <stdlib.h>
+int yylex () { return (getchar()); }
+void yyerror (char *s) {}
+%}
+%%
+a : 'a' { exit(0); };
+END
+
+cat > foo.c << 'END'
+int main () { yyparse(); return 1; }
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE
+
+echo a | ./foo
+echo b | ./foo && Exit 1
+
+# The generated file `parse.c' must be shipped.
+$MAKE distdir
+test -f $distdir/parse.c
+
+# Sanity check on distribution.
+$MAKE distcheck
+
+# While we are at it, make sure that parse.c is erased by
+# maintainer-clean, and not by distclean.
+test -f parse.c
+$MAKE distclean
+test -f parse.c
+./configure # we must re-create `Makefile'
+$MAKE maintainer-clean
+test ! -f parse.c
+
+:
diff --git a/tests/yacc2.test b/tests/yacc2.test
index a095edc..4844ba8 100755
--- a/tests/yacc2.test
+++ b/tests/yacc2.test
@@ -1,5 +1,6 @@
 #! /bin/sh
-# Copyright (C) 1999, 2001, 2002, 2003, 2006  Free Software Foundation, Inc.
+# Copyright (C) 1999, 2001, 2002, 2003, 2006, 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
@@ -26,61 +27,48 @@ AC_PROG_CC
 AC_PROG_YACC
 END
 
+# Run it here once and for all, since we are not going to modify
+# configure.in anymore. 
+$ACLOCAL
+
 cat > Makefile.am <<'END'
 bin_PROGRAMS = zardoz
 zardoz_SOURCES = zardoz.y
 END
 
 # Don't redefine several times the same variable.
-cp Makefile.am Makefile.src
+cp -f Makefile.am Makefile.src
 
-$ACLOCAL
 $AUTOMAKE -a
-
 # If zardoz.h IS mentioned, fail
-grep 'zardoz.h' Makefile.in > /dev/null && Exit 1
-
+$FGREP 'zardoz.h' Makefile.in && Exit 1
 
-
-cp Makefile.src Makefile.am
+cp -f Makefile.src Makefile.am
 echo 'AM_YFLAGS = -d' >> Makefile.am
-
 $AUTOMAKE
-
 # If zardoz.h is NOT mentioned, fail
-grep 'zardoz.h' Makefile.in > /dev/null
-
-
+$FGREP 'zardoz.h' Makefile.in
 
-cp Makefile.src Makefile.am
+cp -f Makefile.src Makefile.am
 echo 'AM_YFLAGS = ' >> Makefile.am
-
 $AUTOMAKE
-
 # If zardoz.h IS mentioned, fail
-grep 'zardoz.h' Makefile.in > /dev/null && Exit 1
-
+$FGREP 'zardoz.h' Makefile.in && Exit 1
 
-
-cp Makefile.src Makefile.am
+cp -f Makefile.src Makefile.am
 echo 'YFLAGS = -d' >> Makefile.am
-
 # YFLAGS is a use variable.
 AUTOMAKE_fails
-grep 'YFLAGS' stderr
+grep 'YFLAGS.* user variable' stderr
+grep 'AM_YFLAGS.* instead' stderr
 $AUTOMAKE -Wno-gnu
-
 # If zardoz.h is NOT mentioned, fail
-grep 'zardoz.h' Makefile.in > /dev/null
-
-
+$FGREP 'zardoz.h' Makefile.in
 
-cp Makefile.src Makefile.am
+cp -f Makefile.src Makefile.am
 echo 'YFLAGS = ' >> Makefile.am
-
 $AUTOMAKE -Wno-gnu
-
 # If zardoz.h IS mentioned, fail
-grep 'zardoz.h' Makefile.in > /dev/null && Exit 1
+$FGREP 'zardoz.h' Makefile.in && Exit 1
 
 :
diff --git a/tests/yacc3.test b/tests/yacc3.test
index 86d897c..62147f5 100755
--- a/tests/yacc3.test
+++ b/tests/yacc3.test
@@ -1,5 +1,6 @@
 #! /bin/sh
-# Copyright (C) 1999, 2001, 2002, 2006  Free Software Foundation, Inc.
+# Copyright (C) 1999, 2001, 2002, 2006, 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,24 +31,22 @@ cat > Makefile.am <<'END'
 AUTOMAKE_OPTIONS = no-dependencies
 bin_PROGRAMS = zardoz
 zardoz_SOURCES = zardoz.y
-magic:
-       @echo $(DIST_COMMON)
 END
 
 $ACLOCAL
 $AUTOMAKE -a
 
-$FGREP -v @SET_MAKE@ Makefile.in > Makefile.sed
 # It should not be disted here
-grep 'zardoz.h' Makefile.in && Exit 1
+$FGREP 'zardoz.h' Makefile.in && Exit 1
 
-cp Makefile.am Save
+cp -f Makefile.am Makefile.sav
 # Test all available flags to make sure header is distributed with
 # `-d'.
 for flag in YFLAGS AM_YFLAGS zardoz_YFLAGS; do
-   cp Save Makefile.am
+   cp -f Makefile.sav Makefile.am
    echo "$flag = -d" >> Makefile.am
-
    $AUTOMAKE -Wno-gnu
-   grep 'zardoz.h' Makefile.in
+   $FGREP 'zardoz.h' Makefile.in
 done
+
+:
diff --git a/tests/yacc4.test b/tests/yacc4.test
index 0435ec0..bb25290 100755
--- a/tests/yacc4.test
+++ b/tests/yacc4.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
@@ -19,15 +19,12 @@
 required='bison gcc'
 . ./defs || Exit 1
 
-cat > configure.in << 'END'
-AC_INIT
-AC_CONFIG_AUX_DIR([.])
-AM_INIT_AUTOMAKE(foo, 0.1)
-PACKAGE=foo
-VERSION=0.1
+set -e
+
+cat >> configure.in << 'END'
 AC_PROG_CC
 AC_PROG_YACC
-AC_OUTPUT(Makefile)
+AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
@@ -60,8 +57,6 @@ cat > foo.c << 'END'
 int main () { return 0; }
 END
 
-set -e
-
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE -a
@@ -86,6 +81,5 @@ test -f parse.c
 $MAKE maintainer-clean
 test ! -f bar.c
 test ! -f parse.c
-:
 
-Exit 0
+:
diff --git a/tests/yacc5.test b/tests/yacc5.test
index 8b00ed8..77de2e9 100755
--- a/tests/yacc5.test
+++ b/tests/yacc5.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
@@ -21,13 +21,10 @@
 
 set -e
 
-cat > configure.in << 'END'
-AC_INIT
-AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+cat >> configure.in << 'END'
 AC_PROG_CC
 AM_PROG_CC_C_O
 AC_PROG_YACC
-AC_OUTPUT(Makefile)
 END
 
 cat > Makefile.am << 'END'
@@ -69,8 +66,8 @@ maude_SOURCES = sub/maude.y
 maude_YFLAGS = -d
 END
 
-$ACLOCAL || Exit 1
-$AUTOMAKE -a || Exit 1
+$ACLOCAL
+$AUTOMAKE -a
 
 # Rule should use maude_YFLAGS.
 grep 'AM_YFLAGS.*maude' Makefile.in && Exit 1
@@ -80,3 +77,5 @@ grep 'maudec' Makefile.in && Exit 1
 
 # Make sure the .o file is required.
 grep '^am_maude_OBJECTS.*maude' Makefile.in
+
+:
diff --git a/tests/yacc6.test b/tests/yacc6.test
index f10effd..b9b259b 100755
--- a/tests/yacc6.test
+++ b/tests/yacc6.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007  Free Software
+# Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007, 2010 Free Software
 # Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -27,13 +27,13 @@ set -e
 
 cat > configure.in << 'END'
 AC_INIT([yacc6], [1.0])
+# `aux' is not an acceptable file/directory name on Windows systems
 AC_CONFIG_AUX_DIR([aux1])
 AM_INIT_AUTOMAKE
-AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([Makefile sub/Makefile])
 AC_PROG_CC
 AM_PROG_CC_C_O
 AC_PROG_YACC
-AC_CONFIG_FILES([sub/Makefile])
 AC_OUTPUT
 END
 
@@ -89,11 +89,11 @@ $AUTOMAKE -a
 test -f aux1/ylwrap
 test ! -f ylwrap
 test ! -f sub/ylwrap
-$FGREP '(top_srcdir)/aux1/ylwrap' sub/Makefile.in
+$FGREP '$(top_srcdir)/aux1/ylwrap' sub/Makefile.in
 ./configure
 $MAKE
-grep '#.*line.*foo.y' sub/foo.c
-grep '#.*line.*bar.y' sub/bar.c
+grep '#.*line.*foo\.y' sub/foo.c
+grep '#.*line.*bar\.y' sub/bar.c
 
 $sleep
 : > z
@@ -106,3 +106,5 @@ sed s/TOKEN/TEKON/g sub/bar.y >sub/bar.yt
 mv -f sub/bar.yt sub/bar.y
 $MAKE
 $MAKE test-time-changed
+
+:
diff --git a/tests/yacc7.test b/tests/yacc7.test
index 2edd15c..2b866bc 100755
--- a/tests/yacc7.test
+++ b/tests/yacc7.test
@@ -1,5 +1,6 @@
 #! /bin/sh
-# Copyright (C) 2001, 2002, 2003, 2004  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2004, 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
@@ -23,6 +24,8 @@
 required=bison
 . ./defs || Exit 1
 
+set -e
+
 cat >> configure.in << 'END'
 AC_PROG_CC
 AC_PROG_YACC
@@ -52,8 +55,6 @@ WORD: "up";
 %%
 END
 
-set -e
-
 $ACLOCAL
 $AUTOMAKE -a
 $AUTOCONF
@@ -83,8 +84,9 @@ $MAKE distclean
 test -f foo.h
 test -f foo.c
 # ... but maintainer-clean should.
-./configure
+./configure # we must re-create `Makefile'
 $MAKE maintainer-clean
 test ! -f foo.h
 test ! -f foo.c
+
 :
diff --git a/tests/yacc8.test b/tests/yacc8.test
index 979415c..797f4e7 100755
--- a/tests/yacc8.test
+++ b/tests/yacc8.test
@@ -1,5 +1,6 @@
 #! /bin/sh
-# Copyright (C) 2002, 2003, 2004, 2006  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2004, 2006, 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
@@ -22,11 +23,7 @@ required="gcc bison"
 
 set -e
 
-cat > configure.in << 'END'
-AC_INIT([yacc8], [1.0])
-AC_CONFIG_AUX_DIR([.])
-AM_INIT_AUTOMAKE
-AC_CONFIG_FILES([Makefile])
+cat >> configure.in << 'END'
 AC_PROG_CC
 AM_PROG_CC_C_O
 AC_PROG_YACC
@@ -39,15 +36,16 @@ bin_PROGRAMS = foo/foo
 foo_foo_SOURCES = foo/parse.y
 AM_YFLAGS = -d
 
+.PHONY: obj
 obj: foo/parse.$(OBJEXT)
 
-test1: obj
-       test -f foo/parse.c
-       test -f foo/parse.$(OBJEXT)
-
-test2: obj
+.PHONY: test1 test2
+test1: foo/parse.$(OBJEXT)
        test -f foo/parse.c
        test -f foo/parse.$(OBJEXT)
+test2: foo/parse2.$(OBJEXT)
+       test -f foo/parse2.c
+       test -f foo/parse2.$(OBJEXT)
 END
 
 mkdir foo
@@ -104,9 +102,11 @@ EXTRA_foo_foo_SOURCES = foo/parse2.y
 END
 
 $AUTOMAKE -a
-test -f ./ylwrap || Exit 1
+test -f ./ylwrap
 
 cd sub
 # Regenerate Makefile (automatic in GNU Make, but not in other Makes)
 ./config.status
 $MAKE test2
+
+:
diff --git a/tests/yaccpp.test b/tests/yaccpp.test
index 9013f40..9c4ae24 100755
--- a/tests/yaccpp.test
+++ b/tests/yaccpp.test
@@ -1,5 +1,6 @@
 #! /bin/sh
-# Copyright (C) 1997, 2001, 2002, 2006  Free Software Foundation, Inc.
+# Copyright (C) 1997, 2001, 2002, 2006, 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
@@ -14,7 +15,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Test to make sure yacc + c++ works.
+# Test to make sure Yacc + C++ is supported.
+# Please keep this is sync with sister test lexcpp.test.
 
 . ./defs || Exit 1
 
@@ -26,11 +28,20 @@ AC_PROG_YACC
 END
 
 cat > Makefile.am << 'END'
-bin_PROGRAMS = zardoz
-zardoz_SOURCES = zardoz.yy
+bin_PROGRAMS = foo bar baz qux
+foo_SOURCES = foo.y++
+bar_SOURCES = bar.ypp
+baz_SOURCES = baz.yy
+qux_SOURCES = qux.yxx
 END
 
 $ACLOCAL
 $AUTOMAKE -a
 
-grep zardoz.cc Makefile.in
+sed -e 's/^/ /' -e 's/$/ /' Makefile.in >mk
+$FGREP ' foo.c++ ' mk
+$FGREP ' bar.cpp ' mk
+$FGREP ' baz.cc '  mk
+$FGREP ' qux.cxx ' mk
+
+:
diff --git a/tests/yaccvpath.test b/tests/yaccvpath.test
index 6db5fd7..7f44671 100755
--- a/tests/yaccvpath.test
+++ b/tests/yaccvpath.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
@@ -15,23 +15,24 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # This test checks that dependent files are updated before including
-# in the distribution. `parse.c' depends on `parce.y'. The later is
+# in the distribution. `parse.c' depends on `parse.y'. The later is
 # updated so that `parse.c' should be rebuild. Then we are running
 # `make' and `make distdir' and check whether the version of `parse.c'
 # to be distributed is up to date.
 
+# Please keep this in sync with sister test `lexvapth.test'.
+
 required='gcc bison'
 . ./defs || Exit 1
 
-cat > configure.in << 'END'
-AC_INIT
-AC_CONFIG_AUX_DIR([.])
-AM_INIT_AUTOMAKE(foo, 0.1)
-PACKAGE=foo
-VERSION=0.1
+set -e
+
+distdir=$me-1.0
+
+cat >> configure.in << 'END'
 AC_PROG_CC
 AC_PROG_YACC
-AC_OUTPUT(Makefile)
+AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
@@ -53,8 +54,6 @@ cat > foo.c << 'END'
 int main () { return 0; }
 END
 
-set -e
-
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE -a
@@ -82,7 +81,7 @@ END
 
 $MAKE
 $MAKE distdir
-grep fubar foo-0.1/parse.c
+$FGREP fubar $distdir/parse.c
 
 #
 # Now check to make sure that `make dist' will rebuild the parser.
@@ -103,4 +102,6 @@ maude : 'm' 'a' 'u' 'd' 'e' {};
 END
 
 $MAKE distdir
-grep maude foo-0.1/parse.c
+$FGREP maude $distdir/parse.c
+
+:
-- 
1.7.1


reply via email to

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