This is the root directory for the regression test suite.

A regression test suite is not meant to be a validation suite. Rather, it is
used by developpers to make sure nothing breaks between two snapshots or
releases. Thoroughness is not a requirement, since it only affects the
accuracy of the test.

The single TEST executable will run the test suite and report any failure.
Although not every feature of the mailagent is tested, having it pass
the whole test suite is a Good Thing. Some commands like PROCESS or POST
are not easy to test automatically, but if you can design good tests
for them, I will be glad to include them.

This set of programs were written quickly, as effeciency or maintainability
was not the main issue, obviously. I believe they are reasonably well
written, making it possible for someone to be able to understand and modify
them.

Running the whole test suite takes a long time. On my machine with 40 Mb of
main memory, it requires 12 minutes to complete (in 1991). It may take a lot
longer if you do not have at least 16 Mb of RAM.

The following options are available to TEST:

	-i		incremental, rerun only failed tests
	-m		monitor logfile with "atail"
	-n		use the non-dataloaded version
	-o		allow outdated mailagent / filter
	-s		stop at first error

The option -i turns the incremental mode on. This proved really nice to
me when I was writing this suite, as I was able to skip all the successful
tests and focus only on those which failed or the new ones.

The -s option will cause the test suite to stop at the first error. Normally,
only failed basic tests abort the process.

The -o option will not restart the tests from scratch, even if the mailagent
or filter is newer than the current OK file.

Option -n will test the non-dataloaded version of the mailagent (because
of some bugs with eval() which cause the dataloaded version to dump core
via a segmentation violation).

The -m option is for desperate cases. It launches the atail process in the
background (a real CPU hog) to monitor all changes to the out/agentlog file.
This may be really convenient when debugging a test suite failure...

Specifying a list of files on the command line will only run these tests.
For instance:

	./TEST options/i.t

I don't know why I spent some time documenting all this (in 1992), as I
don't expect anybody to have any chance working on this suite. Anyway, it
might be nice knowing that all the successful tests are recorded in an OK
file, along with the time stamp of the test, so we may re-run those which
were updated since last run. In the event the mailagent or the filter are
modified, the tests are re-run throughoutfully.  NB: in 2008, I'm glad I
did document all that. :-)

The file 'level' is optional. If present, it gives the default logging level
to be applied when most of the tests are run (i.e. for those who do not require
any special logging level). If absent, no logging will be done (except for
those tests who do require... etc...). All the tests are performed in the
'out' subdirectory, with the user name set to 'nobody'. That may help a lot
when testing commands like RUN, as they have the nasty habbit to mail you, the
user, their output when they fail for whatever reason.

The generic mail used by the test is an automatic answer I got from the
comp.compilers newsgroup moderator the day I posted my first article to that
group. It has no special value, appart from having some constants relative
to it hardwired within the tests themselves. Don't touch it, even to remove
a white space or some tests may fail (particularily GIVE and PIPE, which have
the output of 'wc' hardwired). On my machine, here is the output of 'wc mail':

     34     227    1620  mail

In the event some of the tests do not pass, there is no reason to panic, and
it doesn't necesseratily mean the mailagent has a bug. It is more likely a
combinaison of perl + dataloading + bugs + memory + moon's position. Try
to run the test suite again, and then one more time. It sometimes helps.
Also try changing the logging level via 'level' to see if it doesn't make
any difference. This is not really rational, but empirical law :-).

I think that's all there is to say.
