Running the regression tests
----------------------------

The Makefile used for building can also be used to run a series of
regression tests that check for proper operation of individual
components of SpamAssassin. The tests should be run after building
SpamAssassin and before installing it. For example, a typical install
that includes the testing step would look like

 perl Makefile.PL
 make
 make test
 su
 make install

See the INSTALL file for details on the build and installation
process.

For faster testing with multiple CPUs, you can activate parallel processing
with HARNESS_OPTIONS=j<x>.  For example, this would run 8 tests in parallel:

 make test HARNESS_OPTIONS=j8

Regression Test Options
-----------------------

The test case scripts are located in directory t/ under the root
build directory, in files named t/*.t .

When the tests are run, those that are not applicable in your OS or
with the build options that you selected will be skipped.

Running a subset of the tests
------------------------------

To run some of the tests, specify TEST_FILES as in the following
example:

 make test TEST_FILES="t/spamc.t t/spamc_l.t"

Wildcards can be used in shell file globbing syntax, as in

 make test TEST_FILES="t/spam*.t"

The wildcard syntax does not work with standard Windows command
shells.

You can also run individual test scripts directly, from the "t" directory,
like so (note that it uses hardcoded #!/usr/bin/perl):

 cd t
 ./spamc.t

Getting more output from the tests
----------------------------------

The test suite can be run in a verbose mode using the TEST_VERBOSE=1
switch:

 make test TEST_VERBOSE=1

Options set using 'config'
--------------------------

The test suite accepts some configuration information to identify optional
features that should be tested, or to provide environment-specific settings
needed to test some features (such as an LDAP server or SQL server to use
testing those subsystems).   See 'config.dist' for details.

Options set using environment variables
---------------------------------------

The following environment variables affect operation of the
tests. Under most circumstances they should not be set, allowing the
tests to use default values. A full description of what all of them
do is beyond the scope of this README. If you need the degree of
customisation that they offer, you should be able to read the code in
SATest.pm to see how they are used.

See the following sections for customisations that may be required in common
configurations.  All the variables are listed here to document which may
conflict with the regression tests if they happen to be set to arbitrary
values.

SPAMD_HOST
SPAMD_PORT
SPAMD_LOCALHOST
SPAMD_SCRIPT
SPAMASSASSIN_SCRIPT
SPAMC_SCRIPT
SAAWL_SCRIPT
SACHECKSPAMD_SCRIPT
SALEARN_SCRIPT
SA_ARGS
SC_ARGS
SD_ARGS
SPAMD_FORKER
TEST_DIR
TEST_PERL_TAINT
TEST_PERL_WARN

Testing on Windows or with spamd running on another system
----------------------------------------------------------

Spamd does not run under Windows, except under Cygwin. To run the
spamc tests under Windows or any other system on which you cannot run
spamd during the tests, set the environment variable SPAMD_HOST to the
host name or ip address of the spamd daemon.

If SPAMD_HOST is not set, the regressions tests that use spamd will
start up a spamd daemon using the code in the build tree, and will
shut it down after each test script.

If SPAMD_HOST is set, you must ensure that the spamd daemon is
running before you run make test, and stop it afterwards. The spamd
daemon must run with options that include

  spamd -L -x -p 48373

The last parameter is the port on which spamd will be listening. If
you specify a different port number set the environment variable
SPAMD_PORT in the environment of the make test to be the same number.

For example, if you build SpamAssassin on a Windows system without
setting SPAMD_HOST, you would use commands

 nmake
 nmake test

which would skip all regressions tests of spamc.

If you had already build and installed SpamAssassin under Cygwin on
the same computer, then you could open a Cygwin shell, use the command

 spamd -L -x -p 48373

and then in a Windows CMD.EXE shell you could

 nmake
 set SPAMD_HOST=localhost
 nmake test

to run the spamc tests.

Testing in a FreeBSD jail
-------------------------

see https://issues.apache.org/SpamAssassin/show_bug.cgi?id=5761 for details;
basically, set SPAMD_LOCALHOST to indicate the IP address to use to contact
processes running on the same host, instead of 127.0.0.1.

 ------------------------------
