This directory contains the test suite for the 'etags' and 'ctags'
programs.

The input files, which include source files in various languages
supported by the programs, are in the *-src/ directories (e.g., c-src
for C sources, ada-src for Ada, tex-src for TeX, etc.).

The expected results are slightly different for each of the 8 commands
(see below) run by the test suite, and are on files ETAGS.good_N
(where N is between 1 and 7) and CTAGS.good.

To run the tests, say

   make check

in this directory.  This should run the programs 7 times with various
command line switches, and should not show any differences between the
produced file ETAGS/CTAGS and the corresponding expected results.  Any
diffs shown by the 'diff' utility should be examined for potential
regressions in 'etags' or 'ctags'.

In some cases, diffs should be expected.  These include:

  . adding new input files in the *-src/ directories
  . routine changes in the existing input files, such as the yearly
    update of copyright years, spelling changes, etc.
  . adding new features to etags.c

When the diffs are expected, they should be examined to make sure
there are no regressions.  To do so, compare the line numbers and byte
offsets shown in the new ETAGS/CTAGS files against the up-to-date
input files, and make sure the new values match, whereas the old one
don't.  Also make sure there no new or missing entries in the
ETAGS/CTAGS files as compared with the expected results.  (When new
input files are added, there obviously will be new entries -- these
should be compared to the input files to verify correctness.)

Once the differences are deemed to be justified, i.e. you decide that
the new ETAGS/CTAGS file should become the new expected result, you
should copy the ETAGS/CTAGS files produced by the test run to the
corresponding "good" files, one by one.  Like this:

  $ make check
  $ cp ETAGS ETAGS.good_1
  $ make check
  $ cp ETAGS ETAGS.good_2
  $ make check
  $ cp ETAGS ETAGS.good_3
  ...
  $ make check
  $ cp ETAGS ETAGS.good_7
  $ make check
  $ cp CTAGS CTAGS.good
  $ make check
  $ cp CTAGS CTAGS.good_update
  $ make check
  $ cp CTAGS CTAGS.good_crlf

This uses the fact that "make check" will stop after the first
failure, i.e. after the first time 'diff' reports any diffs, and then
the ETAGS/CTAGS file from the last invocation is available for
becoming the new expected-result file.  Alternatively, you can see the
name of the expected-result file which needs to be updated in the
output of the 'diff' utility.
