diff options
Diffstat (limited to 'tests/lex-clean.test')
-rwxr-xr-x | tests/lex-clean.test | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/tests/lex-clean.test b/tests/lex-clean.test new file mode 100755 index 000000000..dd36f8047 --- /dev/null +++ b/tests/lex-clean.test @@ -0,0 +1,114 @@ +#! /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 .c files derived from non-distributed .l sources +# are cleaned by "make clean", while .c files derived from +# distributed .l sources are cleaned by "make maintainer-clean". +# See also sister test `lex-clean-cxx.test'. + +required=yacc +. ./defs || Exit 1 + +set -e + +cat >> configure.in << 'END' +AC_PROG_CC +AC_PROG_LEX +AC_OUTPUT +END + +cat > Makefile.am << 'END' +bin_PROGRAMS = foo bar baz qux + +foo_SOURCES = main.c lexer.l + +bar_SOURCES = main.c lexer.l +bar_LFLAGS = $(AM_LFLAGS) + +baz_SOURCES = main.c +nodist_baz_SOURCES = baz.l + +qux_SOURCES = main.c +nodist_qux_SOURCES = baz.l +qux_LFLAGS = $(AM_LFLAGS) + +baz.l: + cp $(srcdir)/lexer.l $@ + +CLEANFILES = baz.l + +LDADD = $(LEXLIB) +END + +cat > lexer.l << 'END' +%% +"GOOD" return EOF; +. +END + +cat > main.c << 'END' +int main (void) +{ + return yylex (); +} +END + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a + +./configure + +cp config.status config.sav + +$MAKE +ls -l +# Sanity checks. +test -f lexer.l +test -f lexer.c +test -f bar-lexer.c +test -f baz.l +test -f baz.c +test -f qux-baz.c + +for target in clean distclean; do + $MAKE $target + ls -l + test -f lexer.l + test -f lexer.c + test -f bar-lexer.c + test ! -r baz.l + test ! -r baz.c + test ! -r qux-baz.c +done + +cp config.sav config.status +./config.status # re-create Makefile + +$MAKE maintainer-clean +ls -l +test -f lexer.l +test ! -r lexer.c +test ! -r bar-lexer.c + +cp config.sav config.status +./config.status # re-create Makefile + +# The distribution must work correctly, assuming the user has +# the proper tools to process yacc files. +$MAKE distcheck + +: |