X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/d1139f18482c3d4847e5bb6bf5619f61e03e8c31..a98e6acae2a0aa1ba884da4d6cfb4c107b053e25:/test/README diff --git a/test/README b/test/README index f63c97fa4..0d26488cb 100644 --- a/test/README +++ b/test/README @@ -3,8 +3,8 @@ EXPORTABLE EXIM TEST SUITE This document last updated for: -Test Suite Version: 4.67 -Date: 20 February 2007 +Test Suite Version: 4.87 +Date: 30 January 2016 BACKGROUND @@ -73,12 +73,13 @@ In order to run this test suite, the following requirements must be met: 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.) @@ -120,11 +121,12 @@ In order to run this test suite, the following requirements must be met: 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. @@ -213,10 +215,12 @@ THE RUNTEST SCRIPT ------------------ 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/ @@ -260,6 +264,17 @@ There are some options for the ./runtest script itself: (If it turns out that most people prefer to use diff, I'll change the default.) + -FLAVOR + -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 @@ -827,6 +842,12 @@ terminated by four asterisks. Even if no data is required for the particular 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 [nxm[=start-of-line-text]]* This command operates like the "write" command, which is described below, @@ -908,7 +929,9 @@ input, details of which are given below. A number of options are implemented: -d causes the server to output debugging information -t 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 @@ -998,7 +1021,7 @@ Lines in client scripts are of two kinds: Here is a simple example: client 127.0.0.1 PORT_D - ??? 250 + ??? 220 EHLO xxx ??? 250- ??? 250 @@ -1144,9 +1167,6 @@ fake zone files. These are: 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. @@ -1154,10 +1174,6 @@ fakens, are: 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