This document last updated for:
-Test Suite Version: 4.67
-Date: 20 February 2007
+Test Suite Version: 4.87
+Date: 30 January 2016
BACKGROUND
Defaults:exim-build timestamp_timeout=480,!tty_tickets
-(3) The login under which you run the tests must be in the exim group so that
- it has access to logs, spool files, etc. The login should not be one of the
- names "userx", "usery", "userz", or a few other simple ones such as "abcd"
- and "xyz" and single letters that are used in the tests. The test suite
- expects the login to have a gecos name; I think it will now run if the
- gecos field is empty but there may be anomalies.
+(3) The login under which you run the tests must have the exim group as a
+ secondary so that it has access to logs, spool files, etc. However, it
+ should have a different primary group (eg. "users" vs. "eximgroup"). The
+ login should not be one of the names "userx", "usery", "userz", or a few
+ other simple ones such as "abcd" and "xyz" and single letters that are used
+ in the tests. The test suite expects the login to have a gecos name; I think
+ it will now run if the gecos field is empty but there may be anomalies.
The login must not contain a dash or an equal sign. (Otherwise some tests
about local_from_{suffix,prefix} will fail.)
is also an IPv6 address, additional tests are run when the Exim binary
contains IPv6 support. There are checks in the scripts for a running IPv4
interface; when one is not found, some tests are skipped (with a warning
- message).
+ message). The local net may not be in 10.0/8 as that is used by the suite.
(9) Exim must be built with TRUSTED_CONFIG_LIST support, so that the test
configs can be placed into it. A suitable file location is .../exim/test/trusted_configs
with content .../exim/test/test-config [fill out the ... to make full
paths]. This file should be owner/group matching CONFIGURE_OWNER/GROUP,
- or root/root. The config files in .../exim/test/confs/ should be owner/group the same.
- DISABLE_D_OPTION must not be used. If ALT_CONFIG_PREFIX is used, it
+ or root/root, and it has to be accessible for the login, under which
+ you run the tests. The config files in .../exim/test/confs/ should be
+ owner/group the same. DISABLE_D_OPTION must not be used. If ALT_CONFIG_PREFIX is used, it
must contain the directory of the test-suite. WHITELIST_D_MACROS should contain:
-
- DIR:EXIM_PATH:AA:ACL:ACLRCPT:ACL_MAIL:ACL_PREDATA:ACL_RCPT:AFFIX:ALLOW:ARG1:ARG2:AUTHF:AUTHS:AUTH_ID_DOMAIN:BAD:BANNER:BB:BR:BRB:CERT:COM:COMMAND_USER:CONNECTCOND:CONTROL:CREQCIP:CREQMAC:CRL:CSS:D6:DATA:DCF:DDF:DEFAULTDWC:DELAY:DETAILS:DRATELIMIT:DYNAMIC_OPTION:ELI:ERROR_DETAILS:ERT:FAKE:FALLBACK:FILTER:FILTER_PREPEND_HOME:FORBID:FORBID_SMTP_CODE:FUSER:HAI:HAP:HARDLIMIT:HEADER_LINE_MAXSIZE:HEADER_MAXSIZE:HELO_MSG:HL:HOSTS:HOSTS_AVOID_TLS:HOSTS_MAX_TRY:HVH:IFACE:IGNORE_QUOTA:INC:INSERT:IP1:IP2:LAST:LDAPSERVERS:LENCHECK:LIMIT:LIST:LOG_SELECTOR:LS:MAXNM:MESSAGE_LOGS:MSIZE:NOTDAEMON:ONCE:ONLY:OPT:OPTION:ORDER:PAH:PEX:PORT:PTBC:QDG:QOLL:QUOTA:QUOTA_FILECOUNT:QWM:RCPT_MSG:REMEMBER:REQUIRE:RETRY:RETRY1:RETRY2:RETURN:RETURN_ERROR_DETAILS:REWRITE:ROUTE_DATA:RRATELIMIT:RT:S:SELECTOR:SELF:SERVER:SERVERS:SREQCIP:SREQMAC:SRV:STD:STRICT:SUB:SUBMISSION_OPTIONS:TIMEOUTDEFER:TIMES:TRUSTED:TRYCLEAR:UL:USE_SENDER:UTF8:VALUE:WMF:X:Y
+
+ DIR:EXIM_PATH:AA:ACL:ACLRCPT:ACL_MAIL:ACL_PREDATA:ACL_RCPT:AFFIX:ALLOW:ARG1:ARG2:AUTHF:AUTHS:AUTH_ID_DOMAIN:BAD:BANNER:BB:BR:BRB:CERT:COM:COMMAND_USER:CONNECTCOND:CONTROL:CREQCIP:CREQMAC:CRL:CSS:D6:DATA:DCF:DDF:DEFAULTDWC:DELAY:DETAILS:DRATELIMIT:DYNAMIC_OPTION:ELI:ERROR_DETAILS:ERT:FAKE:FALLBACK:FILTER:FILTER_PREPEND_HOME:FORBID:FORBID_SMTP_CODE:FUSER:HAI:HAP:HARDLIMIT:HEADER_LINE_MAXSIZE:HEADER_MAXSIZE:HELO_MSG:HL:HOSTS:HOSTS_AVOID_TLS:HOSTS_MAX_TRY:HVH:IFACE:IGNORE_QUOTA:INC:INSERT:IP1:IP2:LAST:LDAPSERVERS:LENCHECK:LIMIT:LIST:LOG_SELECTOR:MAXNM:MESSAGE_LOGS:MSIZE:NOTDAEMON:ONCE:ONLY:OPT:OPTION:ORDER:PAH:PEX:PORT:PTBC:QDG:QOLL:QUOTA:QUOTA_FILECOUNT:QWM:RCPT_MSG:REMEMBER:REQUIRE:RETRY:RETRY1:RETRY2:RETURN:RETURN_ERROR_DETAILS:REWRITE:ROUTE_DATA:RRATELIMIT:SELECTOR:SELF:SERVER:SERVERS:SREQCIP:SREQMAC:SRV:STRICT:SUB:SUBMISSION_OPTIONS:TIMEOUTDEFER:TIMES:TRUSTED:TRYCLEAR:UL:USE_SENDER:UTF8:VALUE:WMF
(10) Exim must *not* be built with USE_READLINE, as the test-suite's automation
assumes the simpler I/O model.
------------------
If you do not supply any arguments to ./runtest, it searches for an Exim
-source tree at the same level as the test suite directory. It then looks for an
-Exim binary in a "build" directory of that source tree. If there are several
-Exim source trees, it chooses the latest version of Exim. Consider the
-following example:
+source tree at the same level as the test suite directory. A source tree
+is a source tree, if it contains a build-* directory.
+
+It then looks for an Exim binary in a "build" directory of that source
+tree. If there are several Exim source trees, it chooses the latest
+version of Exim. Consider the following example:
$ ls -F /source/exim
exim-4.60/ exim-4.62/ exim-testsuite-x.xx/
(If it turns out that most people prefer to use diff, I'll change
the default.)
+ -FLAVOR <flavor>
+ -FLAVOUR <flavour>
+ This allows "overrides" for the test results. It's intended
+ use is to deal with distro specific differences in the test
+ output. The default flavour is "foo". If during the test
+ run differences between the current and the expected output
+ are found and no flavour file exists already, you may update
+ the "common" expected output or you may create a flavour
+ file. If a flavour file already exists, any updates will go
+ into that flavour file!
+
-KEEP Normally, after a successful run, the test output files are
deleted. This option prevents this. It is useful when running a
single test, in order to look at the actual output before it is
PORT_D is replaced by a port number for normal daemon use
PORT_N is replaced by a port number that should never respond
PORT_S is replaced by a port number for normal bin/server use
+ PORT_DYNAMIC is replaced by a port number allocated dynamically
TESTNUM is replaced by the current test number
V4NET is replaced by an IPv4 network number for testing
V6NET is replaced by an IPv6 network number for testing
they are networks that can never be used for an IP address of a real host. I've
chosen two multicast networks for the moment.
+PORT_DYNAMIC is allocated by hunting for a free port (starting at port
+1024) a listener can bind to. This is done by runtest, for simulating
+inetd operations.
+
If the host has no IPv6 address, "<no IPv6 address found>" is substituted but
that does not matter because no IPv6 tests will be run. A similar substitution
is made if there is no IPv4 address, and again, tests that actually require a
usage, the asterisks must be given.
+ background
+
+This command takes one script line and runs it in the background,
+in parallel with following commands. For external daemons, eg. redis-server.
+
+
catwrite <file name> [nxm[=start-of-line-text]]*
This command operates like the "write" command, which is described below,
-d causes the server to output debugging information
-t <sec> sets a timeout (default 5) for when the server is
- awaiting an incoming connection
+ awaiting an incoming connection. If negative, the
+ absolute value is used and a timeout results in a
+ nonfailure exit code
-noipv4 causes the server not to set up an IPv4 socket
Here is a simple example:
client 127.0.0.1 PORT_D
- ??? 250
+ ??? 220
EHLO xxx
??? 250-
??? 250
data block. The addresses that are generated are in the
10.250.0.0/16 network.
-The domain names that are handled directly by Exim, without being passed to
-fakens, are:
-
test.again.dns This always provokes a TRY_AGAIN response, for testing the
handling of temporary DNS error. If the full domain name
starts with digits, a delay of that many seconds occurs.
test.fail.dns This always provokes a NO_RECOVERY response, for testing
DNS server failures.
-This special handling could now be done in the fakens program, but while the
-old test suite is still being used it has to be done in Exim itself, so for the
-moment it remains there.
-
The use of gethostbyname() and its IPv6 friends is also subverted when Exim is
running in the test harness. The test code handles a few special names
directly; for all the others it uses DNS lookups, which are then handled as