| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
-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
machine, or just move the servers in case you have local services on any of
those ports.
+ The HTTP server supports listening on a Unix domain socket, the default
+ location is 'http.sock'.
+
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
runtests.pl's -t option will enable torture testing mode, which runs each
test many times and makes each different memory allocation fail on each
successive run. This tests the out of memory error handling code to ensure
- that memory leaks do not occur even in those situations.
+ that memory leaks do not occur even in those situations. It can help to
+ compile curl with CPPFLAGS=-DMEMDEBUG_LOG_SYNC when using this option, to
+ ensure that the memory log file is properly written even if curl crashes.
1.7 Debug
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