Makefile.am
Makefile.in
README
alloc_extra.l
alloc_extra.txt
array_nr.l
array_nr.txt
array_r.l
array_r.txt
basic_nr.l
basic_nr.txt
basic_r.l
basic_r.txt
bison_nr.txt
bison_nr_main.c
bison_nr_parser.y
bison_nr_scanner.l
bison_yylloc.txt
bison_yylloc_main.c
bison_yylloc_parser.y
bison_yylloc_scanner.l
bison_yylval.txt
bison_yylval_main.c
bison_yylval_parser.y
bison_yylval_scanner.l
c_cxx_nr.lll
c_cxx_nr.txt
c_cxx_r.lll
c_cxx_r.txt
ccl.l
ccl.txt
cxx_basic.ll
cxx_basic.txt
cxx_multiple_scanners.txt
cxx_multiple_scanners_1.ll
cxx_multiple_scanners_2.ll
cxx_multiple_scanners_main.cc
cxx_yywrap.ll
cxx_yywrap.txt
debug_nr.l
debug_nr.txt
debug_r.l
debug_r.txt
extended.l
extended.txt
header_nr.txt
header_nr_main.c
header_nr_scanner.l
header_r.txt
header_r_main.c
header_r_scanner.l
include_by_buffer.direct.l
include_by_buffer.direct.txt
include_by_buffer.direct_2.txt
include_by_buffer.direct_3.txt
include_by_push.direct.l
include_by_push.direct.txt
include_by_push.direct_2.txt
include_by_push.direct_3.txt
include_by_reentrant.direct.l
include_by_reentrant.direct.txt
include_by_reentrant.direct_2.txt
include_by_reentrant.direct_3.txt
lineno_nr.l
lineno_nr.one.txt
lineno_r.l
lineno_r.one.txt
lineno_trailing.l
lineno_trailing.one.txt
mem_nr.l
mem_nr.txt
mem_r.l
mem_r.txt
multiple_scanners_nr_1.l
multiple_scanners_nr_2.l
multiple_scanners_nr_main.c
multiple_scanners_r_1.l
multiple_scanners_r_2.l
multiple_scanners_r_main.c
noansi_nr.l
noansi_nr.txt
noansi_r.l
noansi_r.txt
posix.l
posixly_correct.l
prefix_nr.l
prefix_nr.txt
prefix_r.l
prefix_r.txt
pthread.l
pthread_1.txt
pthread_2.txt
pthread_3.txt
pthread_4.txt
pthread_5.txt
quotes.l
quotes.txt
reject.l4
reject.txt
rescan_nr.direct.l
rescan_nr.direct.txt
rescan_r.direct.l
rescan_r.direct.txt
string_nr.l
string_r.l
tableopts.am
tableopts.l4
tableopts.txt
top.l
top.txt
top_main.c
yyextra.l
yyextra.txt
options.cn
tableopts.sh
testwrapper.sh
README
This file describes the flex test suite.

* WHO SHOULD USE THE TEST SUITE?

The test suite is intended to be used by flex developers, i.e., anyone hacking
the flex distribution. If you are simply installing flex, then you can ignore
this directory and its contents.

* STRUCTURE OF THE TEST SUITE

The testsuite consists of several tests. Each test is centered around
a scanner known to work with the most recent version of flex. In
general, after you modify your copy of the flex distribution, you
should re-run the test suite. Some of the tests may require certain
tools to be available (e.g., bison, diff). If any test returns an
error or generates an error message, then your modifications *may*
have broken a feature of flex. At a minimum, you'll want to
investigate the failure and determine if it's truly significant.

* HOW TO RUN THE TEST SUITE

To build and execute all tests from the top level of the flex source tree:

  $ make check

To build and execute a single test:

  $ cd tests/ # from the top level of the flex tree.
  $ make testname.log

  where "testname" is the name of the test. This is an automake-ism
  that will create (or re-create, if need be), a log of the particular
  test run that you're working on.

* HOW TO ADD A NEW TEST TO THE TEST SUITE

** List your test in the TESTS variable in Makefile.am in this
   directory. Note that due to the large number of tests, we use
   variables to group similar tests together. This also helps with
   handling the automake test suite requirements. Hopefully your test
   can be listed in SIMPLE_TESTS. You'll need to add the appropriate
   automake _SOURCES variable as well. If you're unsure, then consult
   the automake manual, paying attention to the parallel test harness
   section.

** On success, your test should return zero.

** On error, your test should return 1 (one) and print a message to
stderr, which will have been redirected to the log file created by the
automake test suite harness.

** If your test is skipped (e.g., because bison was not found), then
   the test should return 2 (two).

** Once your work is done, submit a patch via the flex development
   mailing list, the github pull request mechanism or some other
   suitable means.