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. 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. ------------------------------