diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-08-26 19:25:02 +0200 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-08-26 19:35:28 +0200 |
commit | c433a17c5439982cc441226be61b6692543407ec (patch) | |
tree | a5226dff0f57fcd391ec46daff4c8ae185271ec2 /t/lex-header.sh | |
parent | ffa41804f985694d22bad74067a38133b3b71d26 (diff) | |
download | automake-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-x | t/lex-header.sh | 86 |
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 + +: |