runtests.1 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. .\" **************************************************************************
  2. .\" * _ _ ____ _
  3. .\" * Project ___| | | | _ \| |
  4. .\" * / __| | | | |_) | |
  5. .\" * | (__| |_| | _ <| |___
  6. .\" * \___|\___/|_| \_\_____|
  7. .\" *
  8. .\" * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
  9. .\" *
  10. .\" * This software is licensed as described in the file COPYING, which
  11. .\" * you should have received as part of this distribution. The terms
  12. .\" * are also available at http://curl.haxx.se/docs/copyright.html.
  13. .\" *
  14. .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
  15. .\" * copies of the Software, and permit persons to whom the Software is
  16. .\" * furnished to do so, under the terms of the COPYING file.
  17. .\" *
  18. .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  19. .\" * KIND, either express or implied.
  20. .\" *
  21. .\" * $Id$
  22. .\" **************************************************************************
  23. .\"
  24. .TH runtests.pl 1 "2 Feb 2010" "Curl 7.20.0" "runtests"
  25. .SH NAME
  26. runtests.pl \- run one or more test cases
  27. .SH SYNOPSIS
  28. .B runtests.pl [options] [test number] [!test number] [key word] [!key word]
  29. .SH DESCRIPTION
  30. \fIruntests.pl\fP runs one, several or all the existing test cases in curl's
  31. test suite. It is often called from the root Makefile of the curl package with
  32. \&'make test'.
  33. .SH "TEST NUMBER"
  34. If no test case number is given, all existing tests that the script can find
  35. will be considered for running. You can specify single test cases to run,
  36. space-separated, like "1 3 5 7 11", and you can specify a range like "45 to
  37. 67". You can also specify only the tests you don't want to run by listing
  38. the numbers with a leading exclamation point, like "!66".
  39. .P
  40. It is also possible to specify tests to skip based on a key word describing
  41. the test. These are specified with a leading exclamation point and the
  42. key word or phrase, like "!HTTP NTLM auth". Likewise, tests to run can
  43. be specified simply by specifying the unadorned key words, like "FTPS".
  44. Remember that the exclamation marks and spaces will need to be quoted somehow
  45. when entered at many command shells.
  46. .SH OPTIONS
  47. .IP "-a"
  48. Continue running the rest of the test cases even if one test fails. By
  49. default, the test script stops as soon as an error is detected.
  50. .IP "-bN"
  51. Use N as the base TCP/UDP port number on which to start the test servers.
  52. .IP "-c <curl>"
  53. Provide a custom curl binary to run the tests with. Default is the curl
  54. executable in the build tree.
  55. .IP "-d"
  56. Enable protocol debug: have the servers display protocol output.
  57. .IP "-g"
  58. Run the given test(s) with gdb. This is best used on a single test case and
  59. curl built --disable-shared. This then fires up gdb with command line set to
  60. run the specified test case. Simply (set a break-point and) type 'run' to
  61. start.
  62. .IP "-h"
  63. Displays a help text about this program's command line options.
  64. .IP "-k"
  65. Keep output and log files in log/ after a test run, even if no error was
  66. detected. Useful for debugging.
  67. .IP "-l"
  68. Lists all test case names.
  69. .IP "-n"
  70. Disable the check for and use of valgrind.
  71. .IP "-p"
  72. Prints out all files in "log/" to stdout when a test case fails. Very
  73. practical when used in the automated and distributed tests since then the
  74. people checking the failures and the reasons for them might not have physical
  75. access to the machine and logs.
  76. .IP "-r"
  77. Display run time statistics. (Requires Perl Time::HiRes module)
  78. .IP "-rf"
  79. Display full run time statistics. (Requires Perl Time::HiRes module)
  80. .IP "-s"
  81. Shorter output. Speaks less than default.
  82. .IP "-t[num]"
  83. Selects a \fBtorture\fP test for the given tests. This makes runtests.pl first
  84. run the tests once and count the number of memory allocations made. It then
  85. reruns the test that number of times, each time forcing one of the allocations
  86. to fail until all allocs have been tested. By setting \fInum\fP you can force
  87. the allocation with that number to be set to fail at once instead of looping
  88. through everyone, which is very handy when debugging and then often in
  89. combination with \fI-g\fP.
  90. .IP "-v"
  91. Enable verbose output. Speaks more than default.
  92. .SH "RUNNING TESTS"
  93. Many tests have conditions that must be met before the test case can run
  94. fine. They could depend on built-in features in libcurl or features present in
  95. the operating system or even in third-party libraries that curl may or may not
  96. use.
  97. .P
  98. The test script checks most of these by itself to determine when it is
  99. safe to attempt to run each test. Those which cannot be run due to
  100. failed requirements will simply be skipped and listed at the completion
  101. of all test cases. In some unusual configurations, the test script
  102. cannot make the correct determination for all tests. In these cases,
  103. the problematic tests can be skipped using the "!keyword" skip feature
  104. documented earlier.
  105. .SH "WRITING TESTS"
  106. The simplest way to write test cases is to start with a similar existing test,
  107. save it with a new number and then adjust it to fit. There's an attempt to
  108. document the test case file format in the tests/FILEFORMAT.