summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>2020-10-05 08:59:25 +0200
committerHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>2020-10-05 10:34:45 +0200
commitd0de84b2d250e2f066286db3a3f5400a0f931b67 (patch)
treecf6fa33a6feac7cd60166010d1ab64af8b8e6419
parent78fb059f567b933e3e8c1898f6f51b1e6c3b5396 (diff)
Testsuite: Allow input lines starting with ":<cmd>:", like ":sleep:".
This somehow mimics the behaviour of the client tool, but works for *any* input line that is sent to the application. This reverts the unfortunate take abusing the client's special notation '>>> '. Currently implemented: - :eval: - :neol: - :sleep:
-rw-r--r--test/README27
-rwxr-xr-xtest/runtest20
-rw-r--r--test/scripts/0000-Basic/01006
-rw-r--r--test/scripts/0000-Basic/01016
-rw-r--r--test/scripts/0000-Basic/02424
-rw-r--r--test/scripts/0000-Basic/09002
-rw-r--r--test/scripts/0000-Basic/09014
-rw-r--r--test/scripts/1100-Basic-TLS/11012
-rw-r--r--test/scripts/4030-proxy-protocol/40302
-rw-r--r--test/scripts/4030-proxy-protocol/40314
10 files changed, 48 insertions, 29 deletions
diff --git a/test/README b/test/README
index a399765e2..c0f548292 100644
--- a/test/README
+++ b/test/README
@@ -862,15 +862,21 @@ The remaining commands are followed by data lines for their standard input,
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:
-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.
+- "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").
+
+- "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
@@ -1056,10 +1062,7 @@ Lines in client scripts are of several kinds:
(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
diff --git a/test/runtest b/test/runtest
index 26a404713..5fb7cd737 100755
--- a/test/runtest
+++ b/test/runtest
@@ -2807,12 +2807,28 @@ print ">> |${cmd}${stderrsuffix}\n" if ($debug);
open CMD, "|${cmd}${stderrsuffix}" || tests_exit(1, "Failed to run $cmd");
CMD->autoflush(1);
-while (<SCRIPT>)
+LINE: while (<SCRIPT>)
{
$lineno++;
last if /^\*{4}\s*$/;
do_substitute($testno);
- s/^\\(>>>\s.*)/$1/ or s/^>>>\s(.*)\s*$/$1/ and $_ = eval "\"$1\"";
+ if (my ($cmd, $line) = /^(:\S+?:)(.*)/) {
+ $_ = $line;
+ {
+ $cmd eq ':eval:' and do {
+ $_ = eval "\"$_\"";
+ last;
+ };
+ $cmd eq ':noeol:' and do {
+ s/[\r\n]*$//;
+ last;
+ };
+ $cmd eq ':sleep:' and do {
+ sleep $_;
+ next LINE;
+ };
+ }
+ }
print CMD;
}
diff --git a/test/scripts/0000-Basic/0100 b/test/scripts/0000-Basic/0100
index e31e9809d..7abf09143 100644
--- a/test/scripts/0000-Basic/0100
+++ b/test/scripts/0000-Basic/0100
@@ -78,7 +78,7 @@ exim -odi userx@test.ex <test-data
****
exim -odi userx@test.ex
Last line ending without a newline and with a partial match:
->>> From
+:noeol:From
****
exim -odi filter-userx@test.ex
Test message
@@ -91,11 +91,11 @@ From: is how headers start
****
exim -odi filter-userx@test.ex
Last line ending without a newline and with a partial match:
->>> From
+:noeol:From
****
exim -odi userx@test.ex
Last line ending without a newline and being a single dot:
->>> .
+:noeol:.
****
exim -odi mmdf-userx@test.ex
Line consisting of four ^A characters
diff --git a/test/scripts/0000-Basic/0101 b/test/scripts/0000-Basic/0101
index 512a60ea8..c3143eed7 100644
--- a/test/scripts/0000-Basic/0101
+++ b/test/scripts/0000-Basic/0101
@@ -61,7 +61,7 @@ exim -odi userx@test.ex <test-data
****
exim -odi userx@test.ex
Last line ending without a newline and with a partial match:
->>> From
+:noeol:From
****
exim -odi filter-userx@test.ex
Test message
@@ -74,11 +74,11 @@ From: is how headers start
****
exim -odi filter-userx@test.ex
Last line ending without a newline and with a partial match:
->>> From
+:noeol:From
****
exim -odi userx@test.ex
Last line ending without a newline and being a single dot:
->>> .
+:noeol:.
****
exim -odi mmdf-userx@test.ex
Line consisting of four ^A characters
diff --git a/test/scripts/0000-Basic/0242 b/test/scripts/0000-Basic/0242
index 995f5cc13..785e8e8a6 100644
--- a/test/scripts/0000-Basic/0242
+++ b/test/scripts/0000-Basic/0242
@@ -17,7 +17,7 @@ QUIT
250 OK
****
exim -odi abc@x.y.z
->>> Test message
+:noeol:Test message
****
server PORT_S
220 Server ready
@@ -35,5 +35,5 @@ QUIT
250 OK
****
exim -odi abc@x.y.z
->>> Subject: Test message
+:noeol:Subject: Test message
****
diff --git a/test/scripts/0000-Basic/0900 b/test/scripts/0000-Basic/0900
index af7840470..4503ae0c0 100644
--- a/test/scripts/0000-Basic/0900
+++ b/test/scripts/0000-Basic/0900
@@ -231,7 +231,7 @@ mail from:someone@some.domain
rcpt to:CALLER@test.ex
??? 250
bdat 87 last
-\>>> To: Susan@random.com\n
+>>> To: Susan@random.com\n
From: Sam@random.com
Subject: This is a Bodyless test message
diff --git a/test/scripts/0000-Basic/0901 b/test/scripts/0000-Basic/0901
index 10c582a17..f5a6fff9a 100644
--- a/test/scripts/0000-Basic/0901
+++ b/test/scripts/0000-Basic/0901
@@ -58,7 +58,7 @@ mail from:someone3@some.domain
rcpt to:CALLER@test.ex
??? 250
bdat 10
-\>>> To: Susan@
+>>> To: Susan@
??? 250
bdat 78 last
random.com
@@ -103,7 +103,7 @@ mail from:someone3A@some.domain
rcpt to:CALLER@test.ex
??? 250
bdat 10
-\>>> To: Susan@
+>>> To: Susan@
??? 250
bdat 78 last
random.com
diff --git a/test/scripts/1100-Basic-TLS/1101 b/test/scripts/1100-Basic-TLS/1101
index a1ed5a43b..41407e80b 100644
--- a/test/scripts/1100-Basic-TLS/1101
+++ b/test/scripts/1100-Basic-TLS/1101
@@ -10,7 +10,7 @@ STARTTLS
??? 220
EHLO rhu.barb
????250
-\>>> MAIL FROM:<>\r\nRCPT TO:test@example.com\r\n
+>>> MAIL FROM:<>\r\nRCPT TO:test@example.com\r\n
??? 250 OK
??? 250 Accepted (rcpt via callout)
QUIT
diff --git a/test/scripts/4030-proxy-protocol/4030 b/test/scripts/4030-proxy-protocol/4030
index 154e056d8..1eece1112 100644
--- a/test/scripts/4030-proxy-protocol/4030
+++ b/test/scripts/4030-proxy-protocol/4030
@@ -50,7 +50,7 @@ QUIT
#
# protocol v2 plain receive
client HOSTIPV4 PORT_D
-\>>> \x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A\x21\x11\x00\x0c\x7f\x00\x00\x02\x7f\x2a\x2a\x2a\xc2\x95\x04\x01
+>>> \x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A\x21\x11\x00\x0c\x7f\x00\x00\x02\x7f\x2a\x2a\x2a\xc2\x95\x04\x01
??? 220
HELO clientname
??? 250
diff --git a/test/scripts/4030-proxy-protocol/4031 b/test/scripts/4030-proxy-protocol/4031
index ecf3e827b..f3d2456ec 100644
--- a/test/scripts/4030-proxy-protocol/4031
+++ b/test/scripts/4030-proxy-protocol/4031
@@ -14,7 +14,7 @@ QUIT
****
### protocol v1 receive
exim -bh HOSTIPV4
->>> PROXY TCP4 127.0.0.2 127.42.42.42 64000 25\r\n
+:eval:PROXY TCP4 127.0.0.2 127.42.42.42 64000 25\r\n
HELO clientname
MAIL FROM: <a@test.ex>
RCPT TO:<b@test.ex>
@@ -27,7 +27,7 @@ QUIT
****
### protocol v2 receive
exim -bh HOSTIPV4
->>> \x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A\x21\x11\x00\x0c\x7f\x00\x00\x02\x7f\x2a\x2a\x2a\xc2\x95\x04\x01
+:eval:\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A\x21\x11\x00\x0c\x7f\x00\x00\x02\x7f\x2a\x2a\x2a\xc2\x95\x04\x01
HELO clientname
MAIL FROM: <a@test.ex>
RCPT TO:<b@test.ex>