assumes the simpler I/O model.
Exim must *not* be built with HEADERS_CHARSET set to UTF-8.
+(11) If building any dynamically-loaded lookups, LOOKUP_MODULE_DIR should
+ be set to .../exim/test/eximdir.
+
OPTIONAL EXTRAS
-SLOW For very slow hosts that appear to have Heisenbugs, delay before
comparing output files from a testcase
+ -TLS <client> For cross-library testing. Specify 'openssl" or 'gnutls'
+ as the client; the other is used as the server (assumes that
+ both have been built: set up Local/Makefile for OpenSSL and
+ "make exim_openssl", then for GnuTLS and "make exim_gnutls")
+
The options for ./runtest must be given first (but after the name of the
binary, if present). Any further options, that is, items on the command line
that start with a hyphen, are passed to the Exim binary when it is run as part
# -bS Use of HELO/RSET
A line consisting just of digits is interpreted as the expected return code
-for the command that follows. The default expectation when no such line exists
+for the command that follows.
+
+A line consisting of a tilde (~) followed by digits indicates a non-expected
+return code for the command that follows.
+
+The default expectation when neither such line exists
is a zero return code. For example, here is a complete test script, containing
just one command:
several lines by using \ as a continuation character. This does *not* apply to
data lines.
+A line with a leading number followed by a space and then an uppercase
+word, equals character, value sets an expected return code as above
+plus an environment variable. Example:
+
+ 255 TZ=GB
+ exim_msgdate -l -u -z -localhost_number=20 000000 1PANS3 ZZZZZZ
+ ****
+
+
+
+
Here follows a list of supported commands. They can be divided into two groups:
on the current mainlog file.
+ exiqgrep <data>
+
+This command runs the exiqgrep utility with the given options
+on the current spool directory.
+
+
gnutls
This command is present at the start of all but one of the tests that use
delivered) are not compared with saved versions.
+ no_munge
+
+If this command is encountered anywhere in the script, the output is not
+munged before it is compared with a saved version.
+This option allows meaningful tests of the exim_msgdate utility;
+without it all date comparison checks would succeed.
+
+
no_stderr_check
If this command is encountered anywhere in the script, the stderr output from
terminated by four asterisks ("****"). Even if no data is required for the particular
usage, the asterisks must be given.
-If the input line starts with '>>> ', this prefix and any trailing spaces
-(including line feed) are removed. The reminder is processed with Perl's
-string eval() function, effectivly evaluatiing escape sequences like
-'\x41', or '\r'. If you need a line feed there, you need to encode it
-according to your needs.
+If the input line starts with ':<cmd>:', this prefix is removed and the
+line is processed by the runtest script before sending. The following
+commands are recognised:
+
+- "eval": process the reset of the line with Perl's string eval()
+ function. This can be used to send arbitrary data by encoding it as
+ escape sequences (e.g. "\x41\101"). If you need a line ending, you have
+ to append it accordingly (e.g. "\r\n").
-If the input line starts with '\>>> ', the backslash is removed and the
-rest of the line is passed as input. This is used by the client tool,
-which understands the '>>> ' prefix for similar processing.
+- "noeol": do not terminate the data sent to the application with an end
+ of line character.
+
+- "sleep": interpret the rest of the line as an integer and sleep for
+ that number of seconds before proceeding. No data will be output to
+ the application.
background
(1) "??? ": If a line begins with three question marks and a space, the rest of the
line defines the start of expected output from the server. If what is
received does not match, the client bombs out with an error message.
+ Escape sequences described below in (7) are usable in the expected text.
(2) "???*": If a line begins with three question marks and an asterisk, the server
is expected to close the connection.
(5) ">>> ": If a line begins with three '>' characters and a space, the rest of the
line is input to be sent to the server. Backslash escaping is done as
- described below, but no trailing "\r\n" is sent. As the runtest's
- input processing catches the '>>> ' for its string eval, you may
- want to escape from this first stage processing by prefixing your
- line with '\'.
+ described below, but no trailing "\r\n" is sent.
(6) "<<< ": If a line begin with three '<' characters and a space, the rest of the
line is a filename; the content of the file is inserted into the script
(2) A line that starts with "*sleep" specifies a number of seconds to wait
before proceeding.
-(3) A line containing "*eof" specifies that the client is expected to close
+(3) A line containing "*data" and a number specifies that the client is
+ expected to send that many bytes; the server discards them
+
+(4) A line containing "*eof" specifies that the client is expected to close
the connection at this point.
-(4) A line containing just '.' specifies that the client is expected to send
+(5) A line containing just '.' specifies that the client is expected to send
many lines, terminated by one that contains just a dot.
-(5) Otherwise, the line defines the start of an input line that the client
+(6) Otherwise, the line defines the start of an input line that the client
is expected to send. To allow for lines that start with digits, the line
may start with '<', which is not taken as part of the input data. If the
lines starts with '<<' then only the characters are expected; no return-
the current environment. The former are kept in the directory aux-fixed. The
latter are distributed in the directory aux-var-src, and copied with the
standard substitutions into the directory aux-var at the start of each test
-run.
+run (with TESTNUM from the numeric prefix of the filename is there is one).
Most of the auxiliary files have names that start with a test number,
indicating that they are specific to that one test. A few fixed files (for