tests: explicitly state that our lexers do not require unistd.h
authorPeter Rosin <peda@lysator.liu.se>
Tue, 6 Mar 2012 08:50:09 +0000 (09:50 +0100)
committerPeter Rosin <peda@lysator.liu.se>
Tue, 6 Mar 2012 08:50:09 +0000 (09:50 +0100)
By default, GNU flex generates code that is dependent on unistd.h,
which is not portable to non-ANSI systems causing spurious test
failures.

* tests/cond35.test (tscan.l): Define YY_NO_UNISTD_H.
* tests/lex-clean.test (lexer.l): Likewise.
* tests/lex-depend.test (joe.l): Likewise.
* tests/lex-lib-external.test (foo.l): Likewise.
* tests/lex-lib.test (foo.l): Likewise.
* tests/lex-libobj.test (foo.l): Likewise.
* tests/lex-line.test (zardoz.l): Likewise.
* tests/lex-nodist.test (lexer.l): Likewise.
* tests/lex-noyywrap.test (foo.l): Likewise.
* tests/lex-pr204.test (lexer.l): Likewise.
* tests/lex-subobj-nodep.test (subl/sl.l): Likewise.
* tests/lex3.test (foo.l): Likewise.
* tests/lex5.test (foo/foo.l): Likewise.
* tests/lexvpath.test (lexer.l): Likewise.
* tests/silent-lex.test (foo.l): Likewise.
* tests/silent-many-gcc.test (foo5.l): Likewise.
* tests/silent-many-generic.test (foo5.l): Likewise.
* tests/lex-clean-cxx.test (parsefoo.lxx): Likewise.  Also specify
the never-interactive option to prevent usage of the non-ANSI
function isatty(3) (from unistd.h).
* tests/lex-depend-cxx.test (joe.ll): Likewise.
* tests/README: Describe these quirks.

20 files changed:
tests/README
tests/cond35.test
tests/lex-clean-cxx.test
tests/lex-clean.test
tests/lex-depend-cxx.test
tests/lex-depend.test
tests/lex-lib-external.test
tests/lex-lib.test
tests/lex-libobj.test
tests/lex-line.test
tests/lex-nodist.test
tests/lex-noyywrap.test
tests/lex-pr204.test
tests/lex-subobj-nodep.test
tests/lex3.test
tests/lex5.test
tests/lexvpath.test
tests/silent-lex.test
tests/silent-many-gcc.test
tests/silent-many-generic.test

index 42afa2c359365bed0e98443a73f6280574307856..33a653c710fab534088a0751e57a93f606035fd5 100644 (file)
@@ -263,6 +263,18 @@ Do
   directory, but use '$am_scriptdir' instead.  The complete list of
   such "$am_...dir" variables can be found in tests/defs-static.in.
 
+  When writing input for lex, include the following in the definitions
+  section:
+    %{
+    #define YY_NO_UNISTD_H 1
+    %}
+  to accomodate non-ANSI systems, since GNU flex generates code that
+  includes unistd.h otherwise.  Also add:
+    %option never-interactive
+  to the definitions section if the generated code is to be compiled
+  by a C++ compiler, for similar reasons (i.e., the isatty(3) function
+  from that same unistd.h header would be required otherwise).
+
   Before commit: make sure the test is executable, add the tests to
   TESTS in Makefile.am, add it to XFAIL_TESTS in addition if needed,
   write a ChangeLog entry, send the diff to <automake-patches@gnu.org>.
index 97b4c8ff1c59bf50b73e0af0774b27c07008952b..043b3b059e73832b671eff37cdb0173b56d9b6a8 100755 (executable)
@@ -58,6 +58,9 @@ $FGREP 'tparse.h' Makefile.in # For debugging.
 test `$FGREP -c 'tparse.h:' Makefile.in` = 1
 
 cat > tscan.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END"   return EOF;
 %%
index 4fbbfccc9b833800b857650326cf7a9b87563072..b29bd40fd38d530dfef86ea924cec6e5578a7cfd 100755 (executable)
@@ -55,6 +55,10 @@ LDADD = $(LEXLIB)
 END
 
 cat > parsefoo.lxx << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%option never-interactive
 %%
 "GOOD"   return EOF;
 .
index 62ed6bbdff5f639c06e11e02b06774e4527f6500..6988f92b67aba7215249ba6a113803d34d653cec 100755 (executable)
@@ -54,6 +54,9 @@ LDADD = $(LEXLIB)
 END
 
 cat > lexer.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "GOOD"   return EOF;
 .
index e1560ee0c5b90d62bb9f27cb827dc54461783927..2686a5e2a1f7c59a5bc8873a40e060c2c7a62ba3 100755 (executable)
@@ -48,6 +48,10 @@ test-obj-updated: joe.$(OBJEXT) moe.$(OBJEXT)
 END
 
 cat > joe.ll << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
+%option never-interactive
 %%
 "foo" return EOF;
 .
index 17f66e94c0ba38064bafb3bd66cd3dda862b6bf8..2982845721d540c2d4e2d90a0e8f2ee653b12e82 100755 (executable)
@@ -45,6 +45,9 @@ test-obj-updated: joe.$(OBJEXT)
 END
 
 cat > joe.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "foo" return EOF;
 .
index 399c6528845d79f3a49693651c66f88ceda117cb..21802c5d2b9670f8d345c6bb6280ace4ca941581 100755 (executable)
@@ -42,6 +42,9 @@ have-lexlib:
 END
 
 cat > foo.l <<'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "GOOD"   return EOF;
 .
index e1cef76e3296bfd485581a7e5eb463b9e0994200..0320f759c948f6b216ce77b47ed195471f585afd 100755 (executable)
@@ -47,6 +47,9 @@ int yywrap (void)
 END
 
 cat > foo.l <<'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END" return EOF;
 .
index a2b128dc44a3cbb04d3a32a9e047edba92533929..3bc29814be1542bf44362678159cfb24a81e2f57 100755 (executable)
@@ -45,6 +45,9 @@ int yywrap (void)
 END
 
 cat > foo.l <<'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END" return EOF;
 .
index e5457cc92034929a84bcb31722721f89d7e1898e..5888c511a3caed3bd42285f08ef4f22d0b7984e7 100755 (executable)
@@ -60,6 +60,9 @@ dir/quux.@OBJEXT@: dir/quux.c
 END
 
 cat > zardoz.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END"  return EOF;
 .
index c1f3b0c48d0e7d4f748b001ab8b0177e47ac7403..70cd2f7c16732349347acc30338cb1e9b355d1c3 100755 (executable)
@@ -47,6 +47,9 @@ check-local: test-build test-dist
 lexer.l:
        rm -f $@ $@-t
        :; { : \
+         && echo '%{' \
+         && echo '#define YY_NO_UNISTD_H 1' \
+         && echo '%}' \
          && echo '%%' \
          && echo '"GOOD" return EOF;' \
          && echo '.'; \
index 164095372e3b0821917daa02c5ede52dd1090ed4..1c4a13b1975ea7268df834e6c45a1b3b6b12a0da 100755 (executable)
@@ -37,6 +37,9 @@ END
 
 cat > foo.l << 'END'
 %option noyywrap
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "GOOD"   return EOF;
 .
index 1ef620532503346b22d7cac6c16f87bc1f2d5c63..07b56447bd931b173ad19fb389a226341de7c441 100755 (executable)
@@ -51,6 +51,9 @@ distdirtest: distdir
 EOF
 
 cat > lexer.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "GOOD"   return EOF;
 .
index 8bfc153ba0b6d2b4742decf001ac1b95d011b6db..44c9776359603bf298f63fff5a75152e1d689f39 100755 (executable)
@@ -38,6 +38,9 @@ END
 mkdir sub1 sub2
 
 cat >sub1/s1.l <<\END
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END"   return EOF;
 .
index 23e14c9dcfcdd52ec80cb3ffb7e9877e41545840..125152b44aa6a1812dbd3f4715cff9b79976f9cc 100755 (executable)
@@ -33,6 +33,9 @@ foo_SOURCES = foo.l
 END
 
 cat > foo.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "GOOD"   return EOF;
 .
index dcccc2ed28a65639aefbd7bae486798f9e849d08..4b0663de061629b5bd49a8d1cc52c7898cc7e44d 100755 (executable)
@@ -37,6 +37,9 @@ END
 mkdir foo
 
 cat > foo/foo.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END"   return EOF;
 .
index 4572fe50204a97694bd3c2d2d8b635873fac2e05..c7316929f5482b527b43a3db331b87b13cb578a3 100755 (executable)
@@ -44,6 +44,9 @@ END
 
 # Original lexer, with a "foobar" comment
 cat > lexer.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END" return EOF;
 .
@@ -86,6 +89,9 @@ $sleep
 
 # New lexer, with 'fubar' comment.
 cat > ../lexer.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END" return EOF;
 .
@@ -106,6 +112,9 @@ $sleep
 
 # New lexer, with 'maude' comment.
 cat > ../lexer.l << 'END'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END" return EOF;
 .
index ff68edaa29039aa14d06b1340bc930dfa79aa011..1855538e175cecc4238f6b672a47ff59aae1338b 100755 (executable)
@@ -54,6 +54,9 @@ LDADD = $(LEXLIB)
 EOF
 
 cat > foo.l <<'EOF'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END"   return EOF;
 .
index 8cba837121861356f501aa87fca03697de0a274f..8b457caaf7af207f9e55e8c213a811702db1d52f 100755 (executable)
@@ -157,6 +157,9 @@ cat > foo3.f <<'EOF'
       end
 EOF
 cat > foo5.l <<'EOF'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END"   return EOF;
 .
index a3d3b81b587fb2d54c74cd6ab4e9548024e3780c..3949009784c5c6c1d37208fef5f314cd6f46abf0 100755 (executable)
@@ -184,6 +184,9 @@ cat > foo3.f <<'EOF'
       end
 EOF
 cat > foo5.l <<'EOF'
+%{
+#define YY_NO_UNISTD_H 1
+%}
 %%
 "END"   return EOF;
 .