automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: yaccvpath.test


From: Pavel Roskin
Subject: Re: yaccvpath.test
Date: Sat, 3 Mar 2001 02:06:01 -0500 (EST)

Hello, Alexandre!

>  Pavel> It's not Perl. It's a timestamp quantization.
>
> Oops, I should have read this mail before posting my own patch...

I'm applying my patch with few other changes. It appears that we have more
than one problem - one of them is that the old file is distributed and
another one it that "make distcheck" detects the problem quite late - when
it runs "make distclean".

I understand that your test case was to demonstrate the first problem. But
then "make distcheck" is irrelevant - the problem can be detected already
after "make distdir" - we don't even need gzip for that!

If you want to add a test for "make distcheck" you are welcome to.
However, please comment your test next time, otherwise it takes too much
time to understand what you meant to test if something goes wrong.

And also please make some "unit testing" of your tests. For example,
YACC=bison had no chances to work even when configuring in the source
tree, since bison outputs files with different names.

Regards,
Pavel Roskin

________________________________
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,12 @@
+2001-02-27  Pavel Roskin  <address@hidden>
+
+       * tests/yaccvpath.test: Add a delay to make parse.c really out
+       of date. Detect the problem earlier, after `make distdir'. Drop
+       dependency on flex. Always use the `-y' flag for bison. Comment
+       changes.
+
+       * tests/Makefile.am: Add yaccvpath.test to XFAIL_TESTS.
+
 2001-03-02  Jens KrŠ­ger <address@hidden>

        * depend2.am (?!GENERIC??LIBTOOL?%LTOBJ%): Add `%' to fix typo.
--- tests/Makefile.am
+++ tests/Makefile.am
@@ -2,7 +2,7 @@

 AUTOMAKE_OPTIONS = gnits

-XFAIL_TESTS =
+XFAIL_TESTS = yaccvpath.test
 TESTS =        \
 acinclude.test \
 aclocal.test \
--- tests/yaccvpath.test
+++ tests/yaccvpath.test
@@ -1,12 +1,19 @@
 #! /bin/sh

-# This attempts to `make distcheck' from a separate directory
-# (i.e. builddir!=srcdir).  Before doing `make distcheck' a parser
-# definition is updated in the srcdir in order to check whether the
-# archived perser is up-to-date or not.
+# This test checks that dependent files are updated before including
+# in the distribution. `parse.c' depends on `parce.y'. The later is
+# updated so that `parse.c' should be rebuild. Then we are running
+# `make' and `make distdir' and check whether the version of `parse.c'
+# to be distributed is up to date.

 . $srcdir/defs || exit 1

+# Fail gracefully if no autoconf.
+$needs_autoconf
+# Likewise for some other tools.
+(gcc -v) > /dev/null 2>&1 || exit 77
+(bison -V) > /dev/null 2>&1 || exit 77
+
 cat > configure.in << 'END'
 AC_INIT
 AC_CONFIG_AUX_DIR([.])
@@ -19,10 +26,11 @@
 END

 cat > Makefile.am << 'END'
-bin_PROGRAMS= foo
-foo_SOURCES= parse.y foo.c
+bin_PROGRAMS = foo
+foo_SOURCES = parse.y foo.c
 END

+# Original parser, with `foobar'
 cat > parse.y << 'END'
 %{
 int yylex () {return 0;}
@@ -36,16 +44,8 @@
 int main () { return 0; }
 END

-# Fail gracefully if no autoconf.
-$needs_autoconf
-# Likewise for some other tools.
-(gcc -v) > /dev/null 2>&1 || exit 77
-(flex -V) > /dev/null 2>&1 || exit 77
-(bison -V) > /dev/null 2>&1 || exit 77
-
-LEX=flex
-export LEX
-YACC=bison
+# We are not checking Autoconf, so we pick $YACC for it.
+YACC="bison -y"
 export YACC

 # Remove some files installed by defs.
@@ -58,15 +58,27 @@
 $AUTOCONF
 $AUTOMAKE -a

-bison -y parse.y
+$YACC parse.y
 mv y.tab.c parse.c

-cat >> parse.y << 'END'
-fubar : 'f' foobar {};
-END
-
 mkdir sub
 cd sub
 ../configure
+
+# A delay is needed to make sure that the new parse.y is indeed newer
+# than parse.c, i.e. the they don't have the same timestamp.
+sleep 2
+
+# New parser, with `fubar'
+cat > parse.y << 'END'
+%{
+int yylex () {return 0;}
+void yyerror (char *s) {}
+%}
+%%
+fubar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+END
+
 $MAKE
-$MAKE distcheck
+$MAKE distdir
+grep fubar foo-0.1/parse.c
________________________________




reply via email to

[Prev in Thread] Current Thread [Next in Thread]