summaryrefslogtreecommitdiff
path: root/t/lex-header.sh
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2012-08-26 19:25:02 +0200
committerStefano Lattarini <stefano.lattarini@gmail.com>2012-08-26 19:35:28 +0200
commitc433a17c5439982cc441226be61b6692543407ec (patch)
treea5226dff0f57fcd391ec46daff4c8ae185271ec2 /t/lex-header.sh
parentffa41804f985694d22bad74067a38133b3b71d26 (diff)
downloadautomake-c433a17c5439982cc441226be61b6692543407ec.tar.gz
coverage: bugs #8844 and #9933 (already fixed by Akim's work on ylwrap)
* 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>
Diffstat (limited to 't/lex-header.sh')
-rwxr-xr-xt/lex-header.sh86
1 files changed, 86 insertions, 0 deletions
diff --git a/t/lex-header.sh b/t/lex-header.sh
new file mode 100755
index 000000000..f8d7333e6
--- /dev/null
+++ b/t/lex-header.sh
@@ -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
+
+: