]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
coverage: bugs #8844 and #9933 (already fixed by Akim's work on ylwrap)
authorStefano Lattarini <stefano.lattarini@gmail.com>
Sun, 26 Aug 2012 17:25:02 +0000 (19:25 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sun, 26 Aug 2012 17:35:28 +0000 (19:35 +0200)
* t/flex-header.sh: New test, show that automake bug#8844 and bug#9933
have already been fixed by the recent-ish improvements to ylwrap (merged
with commit v1.12.2-27-gec5cb49 of 2012-07-16, "Merge branch 'yacc-work'
into maint").
* t/list-of-tests.mk: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
t/lex-header.sh [new file with mode: 0755]
t/list-of-tests.mk

diff --git a/t/lex-header.sh b/t/lex-header.sh
new file mode 100755 (executable)
index 0000000..f8d7333
--- /dev/null
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2011-2012 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/>.
+
+# Automake lex support can work with flex '--header-file' option (see
+# bugs #8844 and #9933).
+
+required='cc flex'
+. ./defs || exit 1
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_PROG_LEX
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = lexer.l main.c mylex.h
+foo_LFLAGS = --header-file=mylex.h
+BUILT_SOURCES = mylex.h
+# Recover from removal of header.
+mylex.h: foo-lexer.c
+       test -f $@ || rm -f foo-lexer.c
+       test -f $@ || $(MAKE) $(AM_MAKEFLAGS) foo-lexer.c
+END
+
+cat > lexer.l << 'END'
+%option noyywrap
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%%
+"GOOD"   return EOF;
+.
+%%
+END
+
+cat > main.c <<'END'
+#include "mylex.h"
+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
+
+# Program should build and run.
+$MAKE
+if ! cross_compiling; then
+  echo GOOD | ./foo
+  echo BAD | ./foo && exit 1
+  : For shells with busted 'set -e'.
+fi
+
+# Recovering from header removal.
+rm -f mylex.h
+$MAKE
+test -f mylex.h
+
+# Sanity check on distribution.
+yl_distcheck
+
+:
index f72a6fa634d36064b971dba026ba3cb50cc22b5c..ff4448e9ba056628c3ab30bb521b0a05befe767c 100644 (file)
@@ -566,6 +566,7 @@ t/lex5.sh \
 t/lexcpp.sh \
 t/lexvpath.sh \
 t/lex-subobj-nodep.sh \
+t/lex-header.sh \
 t/lex-lib.sh \
 t/lex-lib-external.sh \
 t/lex-libobj.sh \