| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
-The cURL Test Suite
+The curl Test Suite
1. Running
1.1 Requires to run
diff (when a test fails, a diff is shown)
stunnel (for HTTPS and FTPS tests)
OpenSSH or SunSSH (for SCP, SFTP and SOCKS4/5 tests)
+ nghttpx (for HTTP/2 tests)
+ nroff (for --manual tests)
1.2 Port numbers used by test servers
- TCP/8999 for SCP/SFTP
- TCP/9000 for SOCKS
- TCP/9001 for POP3
- - TCP/9002 for IMAP
- - TCP/9003 for SMTP
- - TCP/9004 for SMTP IPv6
- - TCP/9005 for RTSP
- - TCP/9006 for RTSP IPv6
- - TCP/9007 for GOPHER
- - TCP/9008 for GOPHER IPv6
- - TCP/9008 for HTTPS server with TLS-SRP support
+ - TCP/9002 for POP3 IPv6
+ - TCP/9003 for IMAP
+ - TCP/9004 for IMAP IPv6
+ - TCP/9005 for SMTP
+ - TCP/9006 for SMTP IPv6
+ - TCP/9007 for RTSP
+ - TCP/9008 for RTSP IPv6
+ - TCP/9009 for GOPHER
+ - TCP/9010 for GOPHER IPv6
+ - TCP/9011 for HTTPS server with TLS-SRP support
+ - TCP/9012 for HTTPS IPv6 server with TLS-SRP support
+ - TCP/9013 for HTTP proxy server for CONNECT
+ - TCP/9014 for HTTP pipelining server
+ - TCP/9015 for HTTP/2 server
+ - TCP/9016 for DICT server
+ - TCP/9017 for SMB server
+ - TCP/9018 for SMBS server (reserved)
+ - TCP/9019 for TELNET server with negotiation support
1.3 Test servers
1.4 Run
- 'make test'. This builds the test suite support code and invokes the
- 'runtests.pl' perl script to run all the tests. Edit the top variables
- of that script in case you have some specific needs, or run the script
- manually (after the support code has been built).
+ './configure && make && make test'. This builds the test suite support code
+ and invokes the 'runtests.pl' perl script to run all the tests. Edit the top
+ variables of that script in case you have some specific needs, or run the
+ script manually (after the support code has been built).
The script breaks on the first test that doesn't do OK. Use -a to prevent
the script from aborting on the first error. Run the script with -v for more
(like "./runtests.pl 3 4" to test 3 and 4 only). It also supports test case
ranges with 'to', as in "./runtests 3 to 9" which runs the seven tests from
3 to 9. Any test numbers starting with ! are disabled, as are any test
- numbers found in the file data/DISABLED (one per line).
+ numbers found in the files data/DISABLED or data/DISABLED.local (one per
+ line). The latter is meant for local temporary disables and will be ignored
+ by git.
When -s is not present, each successful test will display on one line the
test number and description and on the next line a set of flags, the test
1.8 Logs
- All logs are generated in the logs/ subdirectory (it is emptied first in the
+ All logs are generated in the log/ subdirectory (it is emptied first in the
runtests.pl script). Use runtests.pl -k to force it to keep the temporary
files after the test run since successful runs will clean it up otherwise.
2.1 Test case numbering
1 - 99 HTTP
- 100 - 199 FTP*
- 200 - 299 FILE*
+ 100 - 199 FTP
+ 200 - 299 FILE
300 - 399 HTTPS
400 - 499 FTPS
500 - 599 libcurl source code tests, not using the curl command tool
600 - 699 SCP/SFTP
700 - 799 SOCKS4 (even numbers) and SOCK5 (odd numbers)
- 800 - 899 POP3, IMAP, SMTP
- 1000 - 1299 miscellaneous*
- 1300 - 1399 unit tests*
- 1400 - 1499 miscellaneous*
+ 800 - 849 IMAP
+ 850 - 899 POP3
+ 900 - 999 SMTP
+ 1000 - 1299 miscellaneous
+ 1300 - 1399 unit tests
+ 1400 - 1499 miscellaneous
1500 - 1599 libcurl source code tests, not using the curl command tool
(same as 5xx)
- 2000 - x multiple sequential protocols per test case*
+ 1600 - 1699 unit tests
+ 2000 - x multiple sequential protocols per test case
- Since 30-apr-2003, there's nothing in the system that requires us to keep
- within these number series, and those sections marked with * actually
- contain tests for a variety of protocols. Each test case now specifies its
- own server requirements, independent of test number.
+ There's nothing in the system that *requires* us to keep within these number
+ series.
3. Write tests