A list of directory entries that are checked for after the test has completed
and that must not exist. A listed entry existing causes the test to fail.
-### `<protocol [nonewline="yes"][crlf="yes"]>`
+### `<protocol [nonewline="yes"][crlf="yes|headers"]>`
the protocol dump curl should transmit, if `nonewline` is set, we cut off the
trailing newline of this given data before comparing with the one actually
`crlf=yes` forces the newlines to become CRLF even if not written so in the
test.
+`crlf=headers` forces *header* newlines to become CRLF even if not written so
+in the source file. Note that this makes runtests.pl parse and "guess" what is
+a header and what is not in order to apply the CRLF line endings appropriately.
+
### `<proxy [nonewline="yes"][crlf="yes"]>`
The protocol dump curl should transmit to an HTTP proxy (when the http-proxy
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /we/want/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 78\r
-\r
+<protocol crlf="headers">
+PUT /we/want/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 78
+
Weird
file
to
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 0\r
-\r
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="6af4d89c952f4dd4cc215a6878dc499d"\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 3\r
-\r
+<protocol crlf="headers">
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 0
+
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="6af4d89c952f4dd4cc215a6878dc499d"
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 3
+
st
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload1 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 0\r
-\r
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload1 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER.upload1", response="198aa9b6acb4b0c71d02a197a5e41f54"\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 3\r
-\r
+<protocol crlf="headers">
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload1 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 0
+
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload1 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER.upload1", response="198aa9b6acb4b0c71d02a197a5e41f54"
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 3
+
st
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload2 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 0\r
-\r
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload2 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER.upload2", response="d711f0d2042786d930de635ba0d1a1d0"\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 3\r
-\r
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload2 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 0
+
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER.upload2 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER.upload2", response="d711f0d2042786d930de635ba0d1a1d0"
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 3
+
st
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1\r
-Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-User-Agent: curl/%VERSION\r
-Proxy-Connection: Keep-Alive\r
-\r
-CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1\r
-Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
-User-Agent: curl/%VERSION\r
-Proxy-Connection: Keep-Alive\r
-\r
-GET /path/%TESTNUMBER0002 HTTP/1.1\r
-Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="headers">
+CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
+Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
+Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
+User-Agent: curl/%VERSION
+Proxy-Connection: Keep-Alive
+
+CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1
+Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
+User-Agent: curl/%VERSION
+Proxy-Connection: Keep-Alive
+
+GET /path/%TESTNUMBER0002 HTTP/1.1
+Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
[DISCONNECT]
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
four is the number of lines
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER", response="01cb59db1ddaac246b072d5f5f0716d9"\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER", response="01cb59db1ddaac246b072d5f5f0716d9"
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
<verify>
# curl doesn't do a HEAD request on the remote file so it has no idea whether
# it can skip part of the file or not. Instead, it sends the entire file.
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Content-Range: bytes 0-99/100\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 100\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Content-Range: bytes 0-99/100
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 100
+
012345678
012345678
012345678
<verify>
# Strip all valid kinds of EPRT that curl can send
<strippart>
-s/^(EPRT \|2\|::1\|)(.*)/$1/
+s/^(EPRT \|2\|::1\|)(\S*)/$1/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
EPRT |2|::1|
-TYPE A\r
-LIST\r
-QUIT\r
+TYPE A
+LIST
+QUIT
</protocol>
</verify>
</testcase>
# including the full request-body before it responds. So in this test the
# server says 301 and 100 _after_ the entire PUT body has been sent.
-<protocol>
-PUT /want/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 78\r
-\r
+<protocol crlf="headers">
+PUT /want/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 78
+
Weird
file
to
the
PUT
feature
-PUT /want/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 78\r
-\r
+PUT /want/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 78
+
Weird
file
to
# the test HTTP server is blocking until it has read the entire request,
# including the full request-body before it responds. So in this test the
# server says 301 and 200 _after_ the entire PUT body has been sent.
-<protocol>
-PUT /want/%TESTNUMBER HTTP/1.0\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 78\r
-\r
+<protocol crlf="headers">
+PUT /want/%TESTNUMBER HTTP/1.0
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 78
+
Weird
file
to
the
PUT
feature
-PUT /want/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.0\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 78\r
-\r
+PUT /want/data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.0
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 78
+
Weird
file
to
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER.upload1 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 5\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER.upload1 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 5
+
test
-PUT /%TESTNUMBER0002.upload2 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 5\r
-\r
+PUT /%TESTNUMBER0002.upload2 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 5
+
test
</protocol>
<stdout>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER.upload1 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 5\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER.upload1 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 5
+
test
-GET /%TESTNUMBER0002.url2 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+GET /%TESTNUMBER0002.url2 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
</protocol>
<stdout>
HTTP/1.1 200 A OK\r
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
four is the number of lines
-PUT /%TESTNUMBER HTTP/1.0\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER", response="df4cef6b52a30e65d472dd848d2055a1"\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+PUT /%TESTNUMBER HTTP/1.0
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER", response="df4cef6b52a30e65d472dd848d2055a1"
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
four is the number of lines
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Basic %b64[testuser:testpass]b64%\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic %b64[testuser:testpass]b64%
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET ftp://ftp-site/moo/%TESTNUMBER HTTP/1.1\r
-Host: ftp-site:21\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-\r
-GET ftp://ftp-site/moo/%TESTNUMBER HTTP/1.1\r
-Host: ftp-site:21\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-\r
+<protocol crlf="yes">
+GET ftp://ftp-site/moo/%TESTNUMBER HTTP/1.1
+Host: ftp-site:21
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET ftp://ftp-site/moo/%TESTNUMBER HTTP/1.1
+Host: ftp-site:21
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
</protocol>
<stdout>
HTTP/1.1 200 OK\r
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Basic %b64[user1:password1]b64%\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER0001 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Basic %b64[2user:password2]b64%\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="headers">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic %b64[user1:password1]b64%
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Basic %b64[2user:password2]b64%
+User-Agent: curl/%VERSION
+Accept: */*
+
[DISCONNECT]
</protocol>
</verify>
s/^(PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},)\d{1,3},\d{1,3}/$1/
s/^(EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|)\d{1,5}\|/$1/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-EPRT |1|1.2.3.4|\r
-PORT 1,2,3,4,\r
-QUIT\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+EPRT |1|1.2.3.4|
+PORT 1,2,3,4,
+QUIT
</protocol>
</verify>
</testcase>
# Verify data after the test has been "shot"
<verify>
<strippart>
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
EPRT |1|
-TYPE I\r
-SIZE %TESTNUMBER\r
-RETR %TESTNUMBER\r
-QUIT\r
+TYPE I
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
+QUIT
</protocol>
10 is CURLE_FTP_ACCEPT_FAILED
<errorcode>
# Verify data after the test has been "shot"
<verify>
<strippart>
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
EPRT |1|
-TYPE I\r
-SIZE %TESTNUMBER\r
-RETR %TESTNUMBER\r
-QUIT\r
+TYPE I
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
+QUIT
</protocol>
<errorcode>
10
# Verify data after the test has been "shot"
<verify>
<strippart>
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
</strippart>
# This test doesn't send a QUIT because the main state machine in multi.c
# triggers the timeout and sets the CURLE_OPERATION_TIMEDOUT error (28) for
# which the FTP disconnect code generically has to assume could mean the
# control the connection and thus it cannot send any command.
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
EPRT |1|
-TYPE I\r
-SIZE %TESTNUMBER\r
-RETR %TESTNUMBER\r
+TYPE I
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
</protocol>
# 28 is CURLE_OPERATION_TIMEDOUT
<errorcode>
# Verify data after the test has been "shot"
<verify>
<strippart>
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
</strippart>
# The protocol part does not include QUIT simply because the error is
# specifically saying for which connection it concerns, and for timeouts libcurl
# marks the control channel as "invalid". As this test case times out for the
# data connection it could still use the control channel.
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
EPRT |1|
-TYPE I\r
-SIZE %TESTNUMBER\r
-RETR %TESTNUMBER\r
+TYPE I
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
</protocol>
<errorcode>
28
# Verify data after the test has been "shot"
<verify>
<strippart>
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
EPRT |1|
-TYPE I\r
-SIZE %TESTNUMBER\r
-RETR %TESTNUMBER\r
+TYPE I
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
</protocol>
<errorcode>
28
<errorcode>
9
</errorcode>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-CWD path\r
-QUIT\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+CWD path
+QUIT
</protocol>
</verify>
</testcase>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 0\r
-\r
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="dc185587d5e8391b347eef194c2a3cd6"\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 0
+
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="dc185587d5e8391b347eef194c2a3cd6"
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
# Verify data after the test has been "shot"
<verify>
<strippart>
-s/^(EPRT \|1\|)(.*)/$1/
-s/^(PORT)(.*)/$1/
+s/^(EPRT \|1\|)(\S*)/$1/
+s/^(PORT) *(\S*)/$1/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
EPRT |1|
PORT
-TYPE I\r
-SIZE %TESTNUMBER\r
-RETR %TESTNUMBER\r
-QUIT\r
+TYPE I
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
+QUIT
</protocol>
</verify>
</testcase>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/%TESTNUMBER", response="986238b7e0077754944c966f56d9bc77"\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER0003 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER0003 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/%TESTNUMBER0003", response="1c6390a67bac3283a9b023402f3b3540"\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="headers">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/%TESTNUMBER", response="986238b7e0077754944c966f56d9bc77"
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0003 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0003 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/%TESTNUMBER0003", response="1c6390a67bac3283a9b023402f3b3540"
+User-Agent: curl/%VERSION
+Accept: */*
+
[DISCONNECT]
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER0003 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="headers">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0003 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
[DISCONNECT]
</protocol>
</verify>
-foo-
</stdout>
-<protocol>
-GET http://test.remote.haxx.se.%TESTNUMBER:8990/ HTTP/1.1\r
-Host: test.remote.haxx.se.%TESTNUMBER:8990\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-\r
-GET http://different.remote.haxx.se.%TESTNUMBER:8990/ HTTP/1.1\r
-Host: different.remote.haxx.se.%TESTNUMBER:8990\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-\r
+<protocol crlf="headers">
+GET http://test.remote.haxx.se.%TESTNUMBER:8990/ HTTP/1.1
+Host: test.remote.haxx.se.%TESTNUMBER:8990
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://different.remote.haxx.se.%TESTNUMBER:8990/ HTTP/1.1
+Host: different.remote.haxx.se.%TESTNUMBER:8990
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
[DISCONNECT]
</protocol>
</verify>
\r
[DISCONNECT]
</proxy>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1\r
-Host: the.old.moo.%TESTNUMBER:%HTTPPORT\r
-Accept: */*\r
-\r
+<protocol crlf="headers">
+GET /%TESTNUMBER HTTP/1.1
+Host: the.old.moo.%TESTNUMBER:%HTTPPORT
+Accept: */*
+
[DISCONNECT]
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol nonewline="yes">
-PUT /blah/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 4\r
-\r
+<protocol crlf="headers" nonewline="yes">
+PUT /blah/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 4
+
moo
-GET /blah/moo.html&testcase=/%TESTNUMBER0002 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+GET /blah/moo.html&testcase=/%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
</protocol>
</verify>
User-Agent: Http Agent\r
\r
</proxy>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: the.old.moo.%TESTNUMBER:%HTTPPORT\r
-Accept: */*\r
-User-Agent: Http Agent\r
-Content-Length: 13\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: the.old.moo.%TESTNUMBER:%HTTPPORT
+Accept: */*
+User-Agent: Http Agent
+Content-Length: 13
+
Hello Cloud!
</protocol>
</verify>
User-Agent: Proxy Agent\r
\r
</proxy>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: the.old.moo.%TESTNUMBER:%HTTPPORT\r
-Accept: */*\r
-User-Agent: Http Agent\r
-Content-Length: 13\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: the.old.moo.%TESTNUMBER:%HTTPPORT
+Accept: */*
+User-Agent: Http Agent
+Content-Length: 13
+
Hello Cloud!
</protocol>
</verify>
Expect: 100-continue\r
\r
</proxy>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: the.old.moo.%TESTNUMBER:%HTTPPORT\r
-Accept: */*\r
-User-Agent: Http Agent\r
-Expect: 100-continue\r
-Content-Length: 13\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: the.old.moo.%TESTNUMBER:%HTTPPORT
+Accept: */*
+User-Agent: Http Agent
+Expect: 100-continue
+Content-Length: 13
+
Hello Cloud!
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
four is the number of lines
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER", response="b71551e12d1c456e47d8388ecb2edeca"\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/%TESTNUMBER", response="b71551e12d1c456e47d8388ecb2edeca"
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
four is the number of lines
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 0\r
-\r
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 0
+
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-</protocol>
</verify>
</testcase>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="yes">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
</protocol>
<stdout mode="text">
{"date":["Tue, 09 Nov 2010 14:49:00 GMT"],
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER0002 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER0003 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="yes">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0003 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
</protocol>
<stdout>
HTTP/1.1 200 OK\r
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /we/want/%TESTNUMBER HTTP/1.0\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 78\r
-\r
+<protocol crlf="headers">
+PUT /we/want/%TESTNUMBER HTTP/1.0
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 78
+
Weird
file
to
# Verify data after the test has been "shot"
<verify>
-<protocol>
-POST /we/want/%TESTNUMBER HTTP/1.0\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 79\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers">
+POST /we/want/%TESTNUMBER HTTP/1.0
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 79
+Content-Type: application/x-www-form-urlencoded
+
Weird
file
to
^Content-Type:.*
^Accept:.*
</strip>
-<protocol nonewline="yes">
-POST /%TESTNUMBER/testapi/test HTTP/1.1\r
-Host: 127.0.0.1:9000\r
-Authorization: PROVIDER14-HMAC-SHA256 Credential=keyId/19700101/region/service/provider14_request, SignedHeaders=content-type;host;x-provider2-date, Signature=3436256c7c23adeb66dc15984eaa527edc4a504def61da2e0bf4b01ace4f3c0b\r
-X-Provider2-Date: 19700101T000000Z\r
-Content-Length: 9\r
-\r
+<protocol crlf="headers" nonewline="yes">
+POST /%TESTNUMBER/testapi/test HTTP/1.1
+Host: 127.0.0.1:9000
+Authorization: PROVIDER14-HMAC-SHA256 Credential=keyId/19700101/region/service/provider14_request, SignedHeaders=content-type;host;x-provider2-date, Signature=3436256c7c23adeb66dc15984eaa527edc4a504def61da2e0bf4b01ace4f3c0b
+X-Provider2-Date: 19700101T000000Z
+Content-Length: 9
+
%hex[post%00Data]hex%
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /want/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Range: bytes=87-\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="yes">
+GET /want/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Range: bytes=87-
+User-Agent: curl/%VERSION
+Accept: */*
+
</protocol>
<errorcode>
0
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Accept: */*\r
-Content-Length: 22\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+Content-Length: 22
+
This is test PUT data
-POST /1948 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Accept: */*\r
-Content-Length: 22\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+POST /1948 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+Content-Length: 22
+Content-Type: application/x-www-form-urlencoded
+
This is test PUT data
</protocol>
</verify>
^Content-Type:.*
^Accept:.*
</strip>
-<protocol>
-POST /aws_sigv4/testapi/test HTTP/1.1\r
-Host: exam.ple.com:9000\r
-Authorization: AWS4-HMAC-SHA256 Credential=xxx/19700101/us-east-1/s3/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=7eb34202214384872221b99a9c671b7517891ac6af56b0aff24ec51adf62b10a\r
-X-Amz-Date: 19700101T000000Z\r
-x-amz-content-sha256: 4b02e333ccf7cf530ddee3e10ebe54e935500b5e570e68650d63d743e8bbc045\r
-Content-Length: 12\r
-\r
+<protocol crlf="headers">
+POST /aws_sigv4/testapi/test HTTP/1.1
+Host: exam.ple.com:9000
+Authorization: AWS4-HMAC-SHA256 Credential=xxx/19700101/us-east-1/s3/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=7eb34202214384872221b99a9c671b7517891ac6af56b0aff24ec51adf62b10a
+X-Amz-Date: 19700101T000000Z
+x-amz-content-sha256: 4b02e333ccf7cf530ddee3e10ebe54e935500b5e570e68650d63d743e8bbc045
+Content-Length: 12
+
post fields
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-EPSV\r
-TYPE I\r
-SIZE %TESTNUMBER\r
-RETR %TESTNUMBER\r
-QUIT\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+EPSV
+TYPE I
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
+QUIT
</protocol>
<stdout>
data
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /%TESTNUMBER0001 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-EPSV\r
-TYPE I\r
-SIZE %TESTNUMBER0002\r
-RETR %TESTNUMBER0002\r
-QUIT\r
+<protocol crlf="yes">
+GET /%TESTNUMBER0001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+USER anonymous
+PASS ftp@example.com
+PWD
+EPSV
+TYPE I
+SIZE %TESTNUMBER0002
+RETR %TESTNUMBER0002
+QUIT
</protocol>
<stdout>
-foo-
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 0\r
-\r
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="fbed69f9f3fd304c8f1acb1a43eb32688b933c0e28055c16b926cbcec070aeed", algorithm=SHA-256\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 3\r
-\r
+<protocol crlf="headers">
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 0
+
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="fbed69f9f3fd304c8f1acb1a43eb32688b933c0e28055c16b926cbcec070aeed", algorithm=SHA-256
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 3
+
st
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 0\r
-\r
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="fddc3bc7b753b73ab0848fd83cb20cbbca971258eb8d20c941dd5e0b010d66be", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="22d200df1fd02a9d3a7269ef5bbb5bf8f16f184a74907df9b64a3755489c0b42", algorithm=SHA-256, userhash=true\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 3\r
-\r
+<protocol crlf="headers">
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 0
+
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="fddc3bc7b753b73ab0848fd83cb20cbbca971258eb8d20c941dd5e0b010d66be", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="22d200df1fd02a9d3a7269ef5bbb5bf8f16f184a74907df9b64a3755489c0b42", algorithm=SHA-256, userhash=true
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 3
+
st
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1\r
-Host: test.remote.haxx.se.%TESTNUMBER:8990\r
-User-Agent: curl/%VERSION\r
-Proxy-Connection: Keep-Alive\r
-\r
-CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1\r
-Host: test.remote.haxx.se.%TESTNUMBER:8990\r
-Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="test.remote.haxx.se.%TESTNUMBER:8990", response="003e36decb4dbf6366b3ecb9b87c24ec"\r
-User-Agent: curl/%VERSION\r
-Proxy-Connection: Keep-Alive\r
-\r
-GET /path/%TESTNUMBER0002 HTTP/1.1\r
-Host: test.remote.haxx.se.%TESTNUMBER:8990\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="headers">
+CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1
+Host: test.remote.haxx.se.%TESTNUMBER:8990
+User-Agent: curl/%VERSION
+Proxy-Connection: Keep-Alive
+
+CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1
+Host: test.remote.haxx.se.%TESTNUMBER:8990
+Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="test.remote.haxx.se.%TESTNUMBER:8990", response="003e36decb4dbf6366b3ecb9b87c24ec"
+User-Agent: curl/%VERSION
+Proxy-Connection: Keep-Alive
+
+GET /path/%TESTNUMBER0002 HTTP/1.1
+Host: test.remote.haxx.se.%TESTNUMBER:8990
+User-Agent: curl/%VERSION
+Accept: */*
+
[DISCONNECT]
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 0\r
-\r
-GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="691867f4a06c79fd0a175c1857e3df7015f6fff3ce8676497d2f1f805b5a8eca", algorithm=SHA-512-256\r
-Content-Range: bytes 2-4/5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 3\r
-\r
+<protocol crlf="headers">
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 0
+
+GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/%TESTNUMBER", response="691867f4a06c79fd0a175c1857e3df7015f6fff3ce8676497d2f1f805b5a8eca", algorithm=SHA-512-256
+Content-Range: bytes 2-4/5
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 3
+
st
</protocol>
</verify>
s/^(EPRT \|1\|)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|/$1/
s/^(PORT )\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}/$1/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-CWD a\r
-CWD path\r
-EPRT |1|\r
-PORT \r
-TYPE I\r
-SIZE %TESTNUMBER\r
-RETR %TESTNUMBER\r
-PORT \r
-SIZE %TESTNUMBER\r
-RETR %TESTNUMBER\r
-QUIT\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+CWD a
+CWD path
+EPRT |1|
+PORT%spc%
+TYPE I
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
+PORT%spc%
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
+QUIT
</protocol>
</verify>
</testcase>
# Verify data after the test has been "shot"
<verify>
<strippart>
-s/^(EPRT \|2\|::1\|)(.*)/$1/
+s/^(EPRT \|2\|::1\|)(\S*)/$1/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
EPRT |2|::1|
-TYPE A\r
-LIST\r
-QUIT\r
+TYPE A
+LIST
+QUIT
</protocol>
</verify>
</testcase>
# Verify data after the test has been "shot"
<verify>
<strippart>
-s/^(EPRT \|2\|::1\|)(.*)/$1/
+s/^(EPRT \|2\|::1\|)(\S*)/$1/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
EPRT |2|::1|
-TYPE A\r
-LIST\r
-QUIT\r
+TYPE A
+LIST
+QUIT
</protocol>
</verify>
</testcase>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-MDTM %TESTNUMBER\r
-QUIT\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+MDTM %TESTNUMBER
+QUIT
</protocol>
</verify>
</testcase>
Proxy-Connection: Keep-Alive\r
\r
</proxy>
-<protocol>
-GET /we/want/that/page/%TESTNUMBER HTTP/1.1\r
-Host: remotesite.com.%TESTNUMBER:%HTTPPORT\r
-Authorization: Basic %b64[iam:myself]b64%\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /we/want/that/page/%TESTNUMBER HTTP/1.1\r
-Host: remotesite.com.%TESTNUMBER:%HTTPPORT\r
-Authorization: Basic %b64[iam:myself]b64%\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="yes">
+GET /we/want/that/page/%TESTNUMBER HTTP/1.1
+Host: remotesite.com.%TESTNUMBER:%HTTPPORT
+Authorization: Basic %b64[iam:myself]b64%
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /we/want/that/page/%TESTNUMBER HTTP/1.1
+Host: remotesite.com.%TESTNUMBER:%HTTPPORT
+Authorization: Basic %b64[iam:myself]b64%
+User-Agent: curl/%VERSION
+Accept: */*
+
</protocol>
</verify>
</testcase>
<errorcode>
22
</errorcode>
-<protocol>
-PUT /we/want/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 38\r
-\r
+<protocol crlf="headers">
+PUT /we/want/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 38
+
Weird
file
to
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="yes">
+GET /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
</protocol>
</verify>
</testcase>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Content-Range: bytes 50-99/100\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 50\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Content-Range: bytes 50-99/100
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 50
+
012345678
012345678
012345678
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="headers">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
[DISCONNECT]
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-POST /we/want/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 47\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers">
+POST /we/want/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 47
+Content-Type: application/x-www-form-urlencoded
+
%hex[This%00 is binary data with an embedded NUL byte]hex%
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /we/want/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 1053701\r
-Expect: 100-continue\r
-\r
-PUT /we/want/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 1053701\r
-\r
+<protocol crlf="headers">
+PUT /we/want/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 1053701
+Expect: 100-continue
+
+PUT /we/want/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 1053701
+
%repeat[1053700 x x]%
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /we/want/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPSPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 1201\r
-\r
+<protocol crlf="headers">
+PUT /we/want/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPSPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 1201
+
%repeat[200 x banana]%
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-POST /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: foobar/*\r
-Content-Type: application/json\r
-Content-Length: 22\r
-\r
+<protocol crlf="headers">
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: foobar/*
+Content-Type: application/json
+Content-Length: 22
+
{ "drink": "coffee" }
</protocol>
</verify>
<strip>
^Authorization.*cnonce
</strip>
-<protocol>
-GET /%TESTNUMBER0001 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER0001 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER0001", response="ea598bbfdb5c54b7352c977e3885e44d"\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER0002 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER0002 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER0002", response="921a8e6db782d6359db1f40d9ed7e6a6"\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-GET /%TESTNUMBER0002 HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="999999", uri="/%TESTNUMBER0002", cnonce="MTA4MzIr", nc="00000001", qop="auth", response="25291c357671604a16c0242f56721c07", algorithm=MD5\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="yes">
+GET /%TESTNUMBER0001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER0001", response="ea598bbfdb5c54b7352c977e3885e44d"
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER0002", response="921a8e6db782d6359db1f40d9ed7e6a6"
+User-Agent: curl/%VERSION
+Accept: */*
+
+GET /%TESTNUMBER0002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="999999", uri="/%TESTNUMBER0002", cnonce="MTA4MzIr", nc="00000001", qop="auth", response="25291c357671604a16c0242f56721c07", algorithm=MD5
+User-Agent: curl/%VERSION
+Accept: */*
+
</protocol>
<stdout>
HTTP/1.1 401 Authorization Required swsclose\r
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER/?fullpath HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 8\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER/?fullpath HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 8
+
content
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-HEAD /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
-HEAD /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="headers">
+HEAD /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
+HEAD /%TESTNUMBER?foo=moo&moo=poo HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
[DISCONNECT]
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 10\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 10
+
surprise!
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 10\r
-\r
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 10
+
surprise!
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 10\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 10
+
surprise!
</protocol>
<errorcode>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /one/first%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Testno: %TESTNUMBER\r
-Content-Length: 19\r
-\r
+<protocol crlf="headers">
+PUT /one/first%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Testno: %TESTNUMBER
+Content-Length: 19
+
first %TESTNUMBER contents
-PUT /two/first%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Testno: %TESTNUMBER\r
-Content-Length: 19\r
-\r
+PUT /two/first%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Testno: %TESTNUMBER
+Content-Length: 19
+
first %TESTNUMBER contents
-PUT /one/second%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Testno: %TESTNUMBER\r
-Content-Length: 20\r
-\r
+PUT /one/second%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Testno: %TESTNUMBER
+Content-Length: 20
+
second %TESTNUMBER contents
-PUT /two/second%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Testno: %TESTNUMBER\r
-Content-Length: 20\r
-\r
+PUT /two/second%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Testno: %TESTNUMBER
+Content-Length: 20
+
second %TESTNUMBER contents
</protocol>
</verify>
\r
[DISCONNECT]
</proxy>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1\r
-Host: machine.%TESTNUMBER:%HTTPPORT\r
-Authorization: Basic %b64[test:ing]b64%\r
-Accept: */*\r
-\r
+<protocol crlf="headers">
+GET /%TESTNUMBER HTTP/1.1
+Host: machine.%TESTNUMBER:%HTTPPORT
+Authorization: Basic %b64[test:ing]b64%
+Accept: */*
+
[DISCONNECT]
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-POST /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Accept: */*\r
-Content-Length: 45\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers">
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+Content-Length: 45
+Content-Type: application/x-www-form-urlencoded
+
this is what we post to the silly web server
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-</protocol>
# 42 - aborted by callback
<errorcode>
42
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: custom.set.host.name\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-\r
-GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: custom.set.host.name\r
-Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/%TESTNUMBER", response="ca507dcf189196b6a5374d3233042261"\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-\r
-GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: custom.set.host.name\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-\r
-GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: custom.set.host.name\r
-Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/%TESTNUMBER", response="ca507dcf189196b6a5374d3233042261"\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-\r
+<protocol crlf="headers">
+GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: custom.set.host.name
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: custom.set.host.name
+Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/%TESTNUMBER", response="ca507dcf189196b6a5374d3233042261"
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: custom.set.host.name
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: custom.set.host.name
+Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/%TESTNUMBER", response="ca507dcf189196b6a5374d3233042261"
+Accept: */*
+Proxy-Connection: Keep-Alive
+
[DISCONNECT]
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol nonewline="yes">
-POST /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Accept: */*\r
-Content-Length: 4\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers" nonewline="yes">
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+Content-Length: 4
+Content-Type: application/x-www-form-urlencoded
+
This
</protocol>
</verify>
<strip>
^User-Agent:.*
</strip>
-<protocol nonewline="yes">
-POST /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Accept: */*\r
-Content-Length: 46\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers" nonewline="yes">
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+Content-Length: 46
+Content-Type: application/x-www-form-urlencoded
+
%hex[This%00 is test binary data with an embedded NUL]hex%
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 36\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers">
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 36
+Content-Type: application/x-www-form-urlencoded
+
this is the blurb we want to upload
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 0\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 36\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 0
+Content-Type: application/x-www-form-urlencoded
+
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 36
+Content-Type: application/x-www-form-urlencoded
+
this is the blurb we want to upload
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 36\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers">
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 36
+Content-Type: application/x-www-form-urlencoded
+
this is the blurb we want to upload
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 0\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 36\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 0
+Content-Type: application/x-www-form-urlencoded
+
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 36
+Content-Type: application/x-www-form-urlencoded
+
this is the blurb we want to upload
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 36\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers">
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 36
+Content-Type: application/x-www-form-urlencoded
+
this is the blurb we want to upload
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="%repeat[400 x A]%", uri="/path/%TESTNUMBER", response="3325240726fbdaf1e61f3a0dd40b930c"\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 36\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="%repeat[400 x A]%", uri="/path/%TESTNUMBER", response="3325240726fbdaf1e61f3a0dd40b930c"
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 36
+Content-Type: application/x-www-form-urlencoded
+
this is the blurb we want to upload
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol nonewline="yes">
-POST /path/%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Accept: */*\r
-Header0: %repeat[5000 x A]%\r
-Header1: %repeat[5000 x A]%\r
-Header2: %repeat[5000 x A]%\r
-Header3: %repeat[5000 x A]%\r
-Header4: %repeat[5000 x A]%\r
-Header5: %repeat[5000 x A]%\r
-Header6: %repeat[5000 x A]%\r
-Header7: %repeat[5000 x A]%\r
-Content-Length: 40960\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers" nonewline="yes">
+POST /path/%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+Header0: %repeat[5000 x A]%
+Header1: %repeat[5000 x A]%
+Header2: %repeat[5000 x A]%
+Header3: %repeat[5000 x A]%
+Header4: %repeat[5000 x A]%
+Header5: %repeat[5000 x A]%
+Header6: %repeat[5000 x A]%
+Header7: %repeat[5000 x A]%
+Content-Length: 40960
+Content-Type: application/x-www-form-urlencoded
+
%repeat[40960 x A]%
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 36\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers">
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 36
+Content-Type: application/x-www-form-urlencoded
+
this is the blurb we want to upload
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 0\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
-POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
-Host: test.remote.example.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-Content-Length: 36\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 0
+Content-Type: application/x-www-form-urlencoded
+
+POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1
+Host: test.remote.example.com
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 36
+Content-Type: application/x-www-form-urlencoded
+
this is the blurb we want to upload
</protocol>
</verify>
<strip>
^If-Modified-Since:.*
</strip>
-<protocol>
-ANNOUNCE rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0001 RTSP/1.0\r
-CSeq: 1\r
-Content-Length: 306\r
-Content-Type: application/sdp\r
-\r
+<protocol crlf="headers">
+ANNOUNCE rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0001 RTSP/1.0
+CSeq: 1
+Content-Length: 306
+Content-Type: application/sdp
+
v=0
o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4
s=SDP Seminar
a=recvonly
m=audio 3456 RTP/AVP 0
m=video 2232 RTP/AVP 31
-DESCRIBE rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0002 RTSP/1.0\r
-CSeq: 2\r
-Accept: application/sdp\r
-\r
-ANNOUNCE rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0003 RTSP/1.0\r
-CSeq: 3\r
-Content-Type: posty goodness\r
-Content-Length: 35\r
-\r
+DESCRIBE rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0002 RTSP/1.0
+CSeq: 2
+Accept: application/sdp
+
+ANNOUNCE rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0003 RTSP/1.0
+CSeq: 3
+Content-Type: posty goodness
+Content-Length: 35
+
postyfield=postystuff&project=curl
-OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0004 RTSP/1.0\r
-CSeq: 4\r
-\r
+OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0004 RTSP/1.0
+CSeq: 4
+
</protocol>
</verify>
<strip>
^If-Modified-Since:.*
</strip>
-<protocol>
-SETUP rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0001 RTSP/1.0\r
-CSeq: 1\r
-Transport: Planes/Trains/Automobiles\r
-\r
-GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0002 RTSP/1.0\r
-CSeq: 2\r
-Session: getparams-test\r
-Content-Length: 12\r
-Content-Type: text/parameters\r
-\r
+<protocol crlf="headers">
+SETUP rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0001 RTSP/1.0
+CSeq: 1
+Transport: Planes/Trains/Automobiles
+
+GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0002 RTSP/1.0
+CSeq: 2
+Session: getparams-test
+Content-Length: 12
+Content-Type: text/parameters
+
scale
speed
-GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0003 RTSP/1.0\r
-CSeq: 3\r
-Session: getparams-test\r
-\r
-GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0004 RTSP/1.0\r
-CSeq: 4\r
-Session: getparams-test\r
-Content-Length: 24\r
-Content-Type: text/parameters\r
-\r
+GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0003 RTSP/1.0
+CSeq: 3
+Session: getparams-test
+
+GET_PARAMETER rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0004 RTSP/1.0
+CSeq: 4
+Session: getparams-test
+Content-Length: 24
+Content-Type: text/parameters
+
packets_received
jitter
-OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0005 RTSP/1.0\r
-CSeq: 5\r
-Session: getparams-test\r
-\r
+OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER0005 RTSP/1.0
+CSeq: 5
+Session: getparams-test
+
</protocol>
</verify>
</client>
<verify>
-<protocol>
-OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER RTSP/1.0\r
-CSeq: 1\r
-User-Agent: test567\r
-Test-Number: 567\r
-\r
+<protocol crlf="yes">
+OPTIONS rtsp://%HOSTIP:%RTSPPORT/%TESTNUMBER RTSP/1.0
+CSeq: 1
+User-Agent: test567
+Test-Number: 567
+
</protocol>
# 8 == CURLE_WEIRD_SERVER_REPLY
<errorcode>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /we/want/%TESTNUMBERte%5b%5dst.txt HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 12\r
-\r
+<protocol crlf="headers">
+PUT /we/want/%TESTNUMBERte%5b%5dst.txt HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 12
+
a few bytes
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-</protocol>
<file name="%LOGDIR/file%TESTNUMBER.txt">
Moooooooooooo
upload this
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
-s/^PORT (.*)/PORT/
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
+s/^PORT (\S*)/PORT/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-CWD path\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+CWD path
EPRT |1|
PORT
-TYPE I\r
-STOR %TESTNUMBER\r
-QUIT\r
+TYPE I
+STOR %TESTNUMBER
+QUIT
</protocol>
<upload>
Moooooooooooo
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
-s/^PORT (.*)/PORT/
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^PORT (\S*)/PORT/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-CWD path\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+CWD path
EPRT |1|
PORT
-TYPE I\r
-STOR %TESTNUMBER\r
-QUIT\r
+TYPE I
+STOR %TESTNUMBER
+QUIT
</protocol>
# CURLE_FTP_ACCEPT_FAILED = 10
<errorcode>
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
-s/^PORT (.*)/PORT/
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^PORT (\S*)/PORT/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
</strippart>
# a 421 response must prevent further commands from being sent
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-CWD path\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+CWD path
EPRT |1|
PORT
-TYPE I\r
-STOR %TESTNUMBER\r
-QUIT\r
+TYPE I
+STOR %TESTNUMBER
+QUIT
</protocol>
# CURLE_FTP_ACCEPT_FAILED = 10
<errorcode>
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
-s/^PORT (.*)/PORT/
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^PORT (\S*)/PORT/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-CWD path\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+CWD path
EPRT |1|
PORT
-TYPE I\r
-STOR %TESTNUMBER\r
-QUIT\r
+TYPE I
+STOR %TESTNUMBER
+QUIT
</protocol>
<errorcode>
12
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
-s/^PORT (.*)/PORT/
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^PORT (\S*)/PORT/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-CWD path\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+CWD path
EPRT |1|
PORT
-TYPE I\r
-STOR %TESTNUMBER\r
-QUIT\r
+TYPE I
+STOR %TESTNUMBER
+QUIT
</protocol>
<errorcode>
28
# Verify data after the test has been "shot"
<verify>
<strippart>
-s/^(EPRT \|1\|)(.*)/$1/
+s/^(EPRT \|1\|)(\S*)/$1/
</strippart>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
EPRT |1|
-TYPE I\r
-SIZE %TESTNUMBER\r
-RETR %TESTNUMBER\r
-QUIT\r
+TYPE I
+SIZE %TESTNUMBER
+RETR %TESTNUMBER
+QUIT
</protocol>
</verify>
</testcase>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-</protocol>
</verify>
</testcase>
<verify>
# Strip off parts of the EPRT command that might differ
<strippart>
-s/^EPRT \|1\|(.*)/EPRT \|1\|/
+s/^EPRT \|1\|(\S*)/EPRT \|1\|/
</strippart>
# The TYPE command might get sent so we ignore that
<strip>
^TYPE
</strip>
-<protocol>
-USER anonymous\r
-PASS ftp@example.com\r
-PWD\r
-CWD path\r
+<protocol crlf="yes">
+USER anonymous
+PASS ftp@example.com
+PWD
+CWD path
EPRT |1|
</protocol>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-POST /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 69\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers">
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 69
+Content-Type: application/x-www-form-urlencoded
+
e first Monday of the month of April, 1625, the market town of Meung
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol nonewline="yes">
-POST /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 11\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers" nonewline="yes">
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 11
+Content-Type: application/x-www-form-urlencoded
+
e first Mon
</protocol>
</verify>
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 0\r
-\r
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="78a49fa53d0c228778297687d4168e71"\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 85\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 0
+
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER", response="78a49fa53d0c228778297687d4168e71"
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 85
+
This is data we upload with PUT
a second line
line three
Proxy-Connection: Keep-Alive\r
\r
</proxy>
-<protocol nonewline="yes">
-POST /we/want/that/page/%TESTNUMBER HTTP/1.1\r
-Host: test.%TESTNUMBER:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 27\r
-Content-Type: application/x-www-form-urlencoded\r
-\r
+<protocol crlf="headers" nonewline="yes">
+POST /we/want/that/page/%TESTNUMBER HTTP/1.1
+Host: test.%TESTNUMBER:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 27
+Content-Type: application/x-www-form-urlencoded
+
datatopost=ohthatsfunyesyes
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol nonewline="yes">
-POST /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Type: silly/type\r
-Content-Length: 14\r
-\r
+<protocol crlf="headers" nonewline="yes">
+POST /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Type: silly/type
+Content-Length: 14
+
hejsanallabarn
</protocol>
</verify>
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="yes">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
</protocol>
<stdout nonewline="yes">
{"certs":"","conn_id":0,"content_type":"text/html","errormsg":null,"exitcode":0,"filename_effective":"%LOGDIR/out%TESTNUMBER","ftp_entry_path":null,"http_code":200,"http_connect":0,"http_version":"1.1","local_ip":"127.0.0.1","local_port":13,"method":"GET","num_certs":0,"num_connects":1,"num_headers":9,"num_redirects":0,"num_retries":0,"proxy_ssl_verify_result":0,"proxy_used":0,"redirect_url":null,"referer":null,"remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"response_code":200,"scheme":"http","size_download":445,"size_header":4019,"size_request":4019,"size_upload":0,"speed_download":13,"speed_upload":13,"ssl_verify_result":0,"time_appconnect":0.000013,"time_connect":0.000013,"time_namelookup":0.000013,"time_posttransfer":0.000013,"time_pretransfer":0.000013,"time_queue":0.000013,"time_redirect":0.000013,"time_starttransfer":0.000013,"time_total":0.000013,"tls_earlydata":0,"url":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","url.fragment":null,"url.host":"127.0.0.1","url.options":null,"url.password":null,"url.path":"/%TESTNUMBER","url.port":"%HTTPPORT","url.query":null,"url.scheme":"http","url.user":null,"url.zoneid":null,"url_effective":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","urle.fragment":null,"urle.host":"127.0.0.1","urle.options":null,"urle.password":null,"urle.path":"/%TESTNUMBER","urle.port":"%HTTPPORT","urle.query":null,"urle.scheme":"http","urle.user":null,"urle.zoneid":null,"urlnum":0,"xfer_id":0,"curl_version":"curl-unit-test-fake-version"}
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-\r
+<protocol crlf="yes">
+GET /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+
</protocol>
<stdout mode="text">
{"certs":"","conn_id":0,"content_type":"text/html","errormsg":null,"exitcode":0,"filename_effective":"%LOGDIR/out%TESTNUMBER","ftp_entry_path":null,"http_code":200,"http_connect":0,"http_version":"1.1","local_ip":"127.0.0.1","local_port":13,"method":"GET","num_certs":0,"num_connects":1,"num_headers":9,"num_redirects":0,"num_retries":0,"proxy_ssl_verify_result":0,"proxy_used":0,"redirect_url":null,"referer":null,"remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"response_code":200,"scheme":"http","size_download":445,"size_header":4019,"size_request":4019,"size_upload":0,"speed_download":13,"speed_upload":13,"ssl_verify_result":0,"time_appconnect":0.000013,"time_connect":0.000013,"time_namelookup":0.000013,"time_posttransfer":0.000013,"time_pretransfer":0.000013,"time_queue":0.000013,"time_redirect":0.000013,"time_starttransfer":0.000013,"time_total":0.000013,"tls_earlydata":0,"url":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","url.fragment":null,"url.host":"127.0.0.1","url.options":null,"url.password":null,"url.path":"/%TESTNUMBER","url.port":"%HTTPPORT","url.query":null,"url.scheme":"http","url.user":null,"url.zoneid":null,"url_effective":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","urle.fragment":null,"urle.host":"127.0.0.1","urle.options":null,"urle.password":null,"urle.path":"/%TESTNUMBER","urle.port":"%HTTPPORT","urle.query":null,"urle.scheme":"http","urle.user":null,"urle.zoneid":null,"urlnum":0,"xfer_id":0,"curl_version":"curl-unit-test-fake-version"}
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-GET http://firsthost.me./ HTTP/1.1\r
-Host: firsthost.me.\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Proxy-Connection: Keep-Alive\r
-\r
+<protocol crlf="yes">
+GET http://firsthost.me./ HTTP/1.1
+Host: firsthost.me.
+User-Agent: curl/%VERSION
+Accept: */*
+Proxy-Connection: Keep-Alive
+
</protocol>
<file name="%LOGDIR/cookies%TESTNUMBER" mode="text">
# Netscape HTTP Cookie File
#
# Verify data after the test has been "shot"
<verify>
-<protocol>
-PUT /%TESTNUMBER HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-User-Agent: curl/%VERSION\r
-Accept: */*\r
-Content-Length: 14\r
-Expect: 100-continue\r
-\r
+<protocol crlf="headers">
+PUT /%TESTNUMBER HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/%VERSION
+Accept: */*
+Content-Length: 14
+Expect: 100-continue
+
data on stdin
</protocol>
</verify>
<errorcode>
64
</errorcode>
-<protocol>
-CAPA\r
+<protocol crlf="yes">
+CAPA
</protocol>
</verify>
</testcase>
<errorcode>
64
</errorcode>
-<protocol>
-AUTH SSL\r
-AUTH TLS\r
+<protocol crlf="yes">
+AUTH SSL
+AUTH TLS
</protocol>
</verify>
</testcase>
}
}
- if($hash{'crlf'}) {
+ if($hash{'crlf'} eq "headers") {
+ subnewlines(0, \$_) for @protocol;
+ }
+ elsif($hash{'crlf'}) {
subnewlines(1, \$_) for @protocol;
}
}
if(($$thing =~ /^HTTP\/(1.1|1.0|2|3) [1-5][^\x0d]*\z/) ||
- ($$thing =~ /^(GET|POST|PUT|DELETE) \S+ HTTP\/\d+(\.\d+)?/) ||
+ ($$thing =~ /^(GET|HEAD|POST|PUT|DELETE|CONNECT) \S+ HTTP\/\d+(\.\d+)?/) ||
+ ($$thing =~ /^(SETUP|GET_PARAMETER|OPTIONS|ANNOUNCE|DESCRIBE) \S+ RTSP\/\d+(\.\d+)?/) ||
(($$thing =~ /^[a-z0-9_-]+: [^\x0d]*\z/i) &&
# skip curl error messages
($$thing !~ /^curl: \(\d+\) /))) {