tests: fix spurious failures due to missing 'yywrap()' function
authorStefano Lattarini <stefano.lattarini@gmail.com>
Mon, 24 Oct 2011 21:18:34 +0000 (23:18 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Tue, 25 Oct 2011 09:00:19 +0000 (11:00 +0200)
commitb5c39684d50deb95373541d46c4a5f0d0d48c613
tree5c0d864be657d39872bc7ec0a2b157fed3f98a81
parent9579333e603ae57a6b8210f828147cccd53d9276
tests: fix spurious failures due to missing 'yywrap()' function

The AC_PROG_LEX Autoconf macro does not diagnose a failure to find
the "lex library" expected to provide a `yywrap' function (function
which is required to link most lex-generated programs).  On the
contrary, when all the link attempts (i.e., with `-ll' and `-lfl')
fail, configure declares that no lex library is needed, and simply
proceeds with the configuration process -- only for the build to
possibly fail later, at make time.

This behaviour is intended; the Autoconf manual reads:
 ``You are encouraged to use Flex in your sources, since it is
   both more pleasant to use than plain Lex and the C source it
   produces is portable.  In order to ensure portability, however,
   you must either provide a function `yywrap' or, if you don't use
   it (e.g., your scanner has no `#include'-like feature), simply
   include a `%noyywrap' statement in the scanner's source.''

This AC_PROG_LEX behaviour is causing some spurious failures of
the Automake testsuite in environments which lack a proper library
providing `yywrap' (this happens for example on Fedora-based
systems).   The proper workaround is to simply provide a fall-back
implementation of `yywrap' in our lexers.

See also partially-overlapping commit `v1.11-871-geb147a1' (from
the 'testsuite-work' branch), which was motivated by similar
spurious failures experienced when cross-compiling.

Reported by Jim Meyering:
<http://lists.gnu.org/archive/html/automake-patches/2011-10/msg00092.html>

* tests/cond35.test: Provide a dummy `yywrap' function.
* tests/lex3.test: Likewise.
* tests/lexvpath.test: Likewise.
* tests/silent-lex-generic.test: Likewise.
* tests/silent-lex-gcc.test: Likewise.
ChangeLog
tests/cond35.test
tests/lex3.test
tests/lexvpath.test
tests/silent-lex-gcc.test
tests/silent-lex-generic.test