ImapTest Command/Reply Testing Configuration
The tests consist of two files in the test directory:
The test file begins with a header, followed by an empty line and then a list of commands. Messages are appended to the test mailbox from the test.mbox file.
The header contains "key: value" pairs. Allowed keys are:
- capabilities: Space-separated list of capabilities required from the server for this test. If server doesn't have these capabilities, the test is skipped. (FIXME: Checking not done currently)
- connections: Number of connections to use for executing this test. If using 2 or more connections, each command must begin with the connection number which is used for the command (1..n). Default is 1.
- state: nonauth, auth or selected. If selected is used, the mailbox is recreated and test messages are appended to it automatically. Default is selected.
capabilities: CHILDREN LIST-EXTENDED connections: 2 state: auth
There are two ways to configure commands:
[<connection #>] OK|NO|BAD <command> [* <tagged reply>] (0 or more)
[<connection #> <command> [* <tagged reply>] (0 or more) OK|NO|BAD [<prefix>]
Connection number is used if there are more than one connection. The order of untagged replies doesn't matter. The first way is faster to write, while the second allows matching reply's <prefix>.
# way 1) ok select $mailbox * 0 exists # way 2) select $mailbox * 0 exists 1 ok [read-write]
Commands and replies can have $variables. If a variable doesn't have value when it's matched against server input, the variable is initialized from the server input. This allows doing this like:
ok fetch 1,2 uid * 1 fetch (uid $uid1) * 2 fetch (uid $uid2) ok uid store $uid1,$uid2 flags \seen * 1 fetch (uid $uid1 flags (\seen)) * 2 fetch (uid $uid2 flags (\seen))
$n where n is a number map to sequences at the beginning of a command. These are useful when receiving EXPUNGEs from another session. For example:
1 ok expunge 2 ok uid fetch 3 flags # server may send expunge before or after fetch - both match this test * $2 expunge * $3 fetch (uid 3 (flags ()))
There are also some predefined variables:
$mailbox: Mailbox used for testing. box command line parameter specifies this. The default is "imaptest".