From: Stefano Lattarini Date: Sun, 26 Aug 2012 17:25:02 +0000 (+0200) Subject: coverage: bugs #8844 and #9933 (already fixed by Akim's work on ylwrap) X-Git-Tag: v1.12.4~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c433a17c5439982cc441226be61b6692543407ec;p=thirdparty%2Fautomake.git 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 --- 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 . + +# 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 + +: diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index f72a6fa63..ff4448e9b 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -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 \