automake-patches
[Top][All Lists]
Advanced

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

[FYI] {testsuite-work} lex tests: avoid possible hang, fix, and extend


From: Stefano Lattarini
Subject: [FYI] {testsuite-work} lex tests: avoid possible hang, fix, and extend
Date: Wed, 1 Jun 2011 17:46:28 +0200
User-agent: KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; )

* tests/lex3.test (foo.l:yywrap): Return 1, not 0, to avoid hangs.
Bug introduced in commit 'v1.11-871-geb147a1'.
(Makefile.am): Do not add address@hidden@' to `$(LDADD)', as we define
our own `yywrap' function.
* tests/lex.test (tscan.l): In `yywrap', return 1, not 0, for
consistency with the default flex implementation.
* tests/lex-libobj.test (yywrap.c): Likewise.
* tests/lex-subobj-nodep.test (s1.l): Likewise.
* tests/lexvpath.test (foo.c): Likewise.
* tests/silent-lex-gcc (foo.l): Likewise.
* tests/silent-lex-generic (foo.l): Likewise.
* tests/silent-many-gcc (foo5.l): Likewise.
* tests/silent-many-generic (foo5.l): Likewise.
* tests/lex-lib.test (mu.c): Likewise.
Update heading comments, to refer to ...
* tests/lex-lib-external.test: ... this new test, which checks
that we can get use the `yywrap' function from a system-wide
library, if that's available.
---
 ChangeLog                      |   22 ++++++++++++
 tests/Makefile.am              |    1 +
 tests/cond35.test              |    2 +-
 tests/lex-lib-external.test    |   75 ++++++++++++++++++++++++++++++++++++++++
 tests/lex-lib.test             |    3 +-
 tests/lex-libobj.test          |    4 +-
 tests/lex-subobj-nodep.test    |    2 +-
 tests/lex3.test                |    7 ++--
 tests/lexvpath.test            |    2 +-
 tests/silent-lex-gcc.test      |    2 +-
 tests/silent-lex-generic.test  |    2 +-
 tests/silent-many-gcc.test     |    2 +-
 tests/silent-many-generic.test |    2 +-
 13 files changed, 112 insertions(+), 14 deletions(-)
 create mode 100755 tests/lex-lib-external.test

diff --git a/ChangeLog b/ChangeLog
index cc9dd2e..dee08e1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,27 @@
 2011-06-01  Stefano Lattarini  <address@hidden>
 
+       lex tests: avoid possible hang, fix, and extend
+       * tests/lex3.test (foo.l:yywrap): Return 1, not 0, to avoid hangs.
+       Bug introduced in commit 'v1.11-871-geb147a1'.
+       (Makefile.am): Do not add address@hidden@' to `$(LDADD)', as we define
+       our own `yywrap' function.
+       * tests/lex.test (tscan.l): In `yywrap', return 1, not 0, for
+       consistency with the default flex implementation.
+       * tests/lex-libobj.test (yywrap.c): Likewise.
+       * tests/lex-subobj-nodep.test (s1.l): Likewise.
+       * tests/lexvpath.test (foo.c): Likewise.
+       * tests/silent-lex-gcc (foo.l): Likewise.
+       * tests/silent-lex-generic (foo.l): Likewise.
+       * tests/silent-many-gcc (foo5.l): Likewise.
+       * tests/silent-many-generic (foo5.l): Likewise.
+       * tests/lex-lib.test (mu.c): Likewise.
+       Update heading comments, to refer to ...
+       * tests/lex-lib-external.test: ... this new test, which checks
+       that we can get use the `yywrap' function from a system-wide
+       library, if that's available.
+
+2011-06-01  Stefano Lattarini  <address@hidden>
+
        tests: prefer `skip_' over `echo ...; Exit 77'
        * tests/self-check-cleanup.test: When the test must be skipped,
        use `skip_ REASON' instead of `echo REASON; Exit 77'.  Also,
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 0bb993a..02a99b6 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -558,6 +558,7 @@ lexcpp.test \
 lexvpath.test \
 lex-subobj-nodep.test \
 lex-lib.test \
+lex-lib-external.test \
 lex-libobj.test \
 lex-noyywrap.test \
 lflags.test \
diff --git a/tests/cond35.test b/tests/cond35.test
index 143c082..f2b0ded 100755
--- a/tests/cond35.test
+++ b/tests/cond35.test
@@ -64,7 +64,7 @@ cat > tscan.l << 'END'
 /* Avoid possible link errors. */
 int yywrap (void)
 {
-  return 0;
+  return 1;
 }
 END
 
diff --git a/tests/lex-lib-external.test b/tests/lex-lib-external.test
new file mode 100755
index 0000000..5f04594
--- /dev/null
+++ b/tests/lex-lib-external.test
@@ -0,0 +1,75 @@
+#! /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/>.
+
+# Check that we can get use the `yywrap' function from a system-wide
+# library, if that's available.
+
+required='cc lex'
+. ./defs || Exit 1
+
+cat >> configure.in << 'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = lexer
+lexer_SOURCES = foo.l
+lexer_LDADD = $(LEXLIB)
+
+.PHONY: have-lexlib
+have-lexlib:
+       test x'$(LEXLIB)' != x
+       echo 'int main (void) { return yywrap (); }' > x.c
+       $(CC) -c x.c
+       $(CC) x.$(OBJEXT) $(LEXLIB)
+       rm -f x.c *.$(OBJEXT) *.o *.out *.exe
+END
+
+cat > foo.l <<'END'
+%%
+"GOOD"   return EOF;
+.
+%%
+int main (void)
+{
+  /* We don't use a 'while' loop here (like a real lexer would do)
+     to avoid possible hangs. */
+  if (yylex () == EOF)
+    return 0;
+  else
+    return 1;
+}
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+$MAKE have-lexlib || skip_ "no system-wide lex library found"
+
+# Program should build and run and distribute.
+$MAKE all
+if cross_compiling; then :; else
+  echo GOOD | ./lexer
+  echo BAD | ./lexer && Exit 1
+fi
+$MAKE distcheck
+
+:
diff --git a/tests/lex-lib.test b/tests/lex-lib.test
index 07af3ff..e5fdc00 100755
--- a/tests/lex-lib.test
+++ b/tests/lex-lib.test
@@ -17,6 +17,7 @@
 
 # Check that we can provide a personal `yywrap' function in a custom
 # library.
+# See also test `lex-lib-external.test'.
 
 required='cc lex'
 . ./defs || Exit 1
@@ -41,7 +42,7 @@ END
 cat > mu.c << 'END'
 int yywrap (void)
 {
-  return 0;
+  return 1;
 }
 END
 
diff --git a/tests/lex-libobj.test b/tests/lex-libobj.test
index 1ca1d4c..449bd47 100755
--- a/tests/lex-libobj.test
+++ b/tests/lex-libobj.test
@@ -41,7 +41,7 @@ END
 cat > yywrap.c << 'END'
 int yywrap (void)
 {
-  return 0;
+  return 1;
 }
 END
 
@@ -64,7 +64,7 @@ grep LIBOBJS Makefile # For debugging.
 $MAKE
 $MAKE distclean
 
-# Force no "system lex library".
+# Force "no system lex library".
 ./configure LEXLIB='-L /lib'
 grep LIBOBJS Makefile # For debugging.
 grep '^LIBOBJS *=.*yywrap.*\.o' Makefile # Sanity check.
diff --git a/tests/lex-subobj-nodep.test b/tests/lex-subobj-nodep.test
index 322ae96..5db7168 100755
--- a/tests/lex-subobj-nodep.test
+++ b/tests/lex-subobj-nodep.test
@@ -51,7 +51,7 @@ int main (void)
 
 int yywrap(void)
 {
-  return 0;
+  return 1;
 }
 END
 
diff --git a/tests/lex3.test b/tests/lex3.test
index 9c2f5b4..ae79796 100755
--- a/tests/lex3.test
+++ b/tests/lex3.test
@@ -29,9 +29,8 @@ AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
-LDADD             = @LEXLIB@
-noinst_PROGRAMS   = foo
-foo_SOURCES       = foo.l
+noinst_PROGRAMS = foo
+foo_SOURCES = foo.l
 END
 
 cat > foo.l << 'END'
@@ -53,7 +52,7 @@ int main (void)
 /* Avoid possible link errors. */
 int yywrap (void)
 {
-  return 0;
+  return 1;
 }
 END
 
diff --git a/tests/lexvpath.test b/tests/lexvpath.test
index 93902b3..2f54256 100755
--- a/tests/lexvpath.test
+++ b/tests/lexvpath.test
@@ -59,7 +59,7 @@ int main (void)
 /* Avoid possible link errors. */
 int yywrap (void)
 {
-  return 0;
+  return 1;
 }
 END
 
diff --git a/tests/silent-lex-gcc.test b/tests/silent-lex-gcc.test
index 2a691c3..e01fd72 100755
--- a/tests/silent-lex-gcc.test
+++ b/tests/silent-lex-gcc.test
@@ -58,7 +58,7 @@ cat > foo.l <<'EOF'
 /* Avoid possible link errors. */
 int yywrap (void)
 {
-  return 0;
+  return 1;
 }
 int main (void)
 {
diff --git a/tests/silent-lex-generic.test b/tests/silent-lex-generic.test
index bc3ffff..7d2b197 100755
--- a/tests/silent-lex-generic.test
+++ b/tests/silent-lex-generic.test
@@ -58,7 +58,7 @@ cat > foo.l <<'EOF'
 /* Avoid possible link errors. */
 int yywrap (void)
 {
-  return 0;
+  return 1;
 }
 int main (void)
 {
diff --git a/tests/silent-many-gcc.test b/tests/silent-many-gcc.test
index 8cdb35b..b2d4174 100755
--- a/tests/silent-many-gcc.test
+++ b/tests/silent-many-gcc.test
@@ -161,7 +161,7 @@ cat > foo5.l <<'EOF'
 /* Avoid possible link errors. */
 int yywrap (void)
 {
-  return 0;
+  return 1;
 }
 EOF
 cat > foo6.y <<'EOF'
diff --git a/tests/silent-many-generic.test b/tests/silent-many-generic.test
index 7d615ac..17dea2c 100755
--- a/tests/silent-many-generic.test
+++ b/tests/silent-many-generic.test
@@ -162,7 +162,7 @@ cat > foo5.l <<'EOF'
 /* Avoid possible link errors. */
 int yywrap (void)
 {
-  return 0;
+  return 1;
 }
 EOF
 cat > foo6.y <<'EOF'
-- 
1.7.2.3




reply via email to

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