unittest.html 85 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <!-- This file is generated by Nim. -->
  4. <html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8. <title>std/unittest</title>
  9. <!-- Google fonts -->
  10. <link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
  11. <link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
  12. <!-- Favicon -->
  13. <link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
  14. <link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
  15. <!-- CSS -->
  16. <link rel="stylesheet" type="text/css" href="nimdoc.out.css?v=2.3.1">
  17. <!-- JS -->
  18. <script type="text/javascript" src="dochack.js?v=2.3.1"></script>
  19. </head>
  20. <body>
  21. <div class="document" id="documentId">
  22. <div class="container">
  23. <h1 class="title">std/unittest</h1>
  24. <div class="row">
  25. <div class="three columns">
  26. <div class="theme-select-wrapper">
  27. <label for="theme-select">Theme:&nbsp;</label>
  28. <select id="theme-select" onchange="setTheme(this.value)">
  29. <option value="auto">🌗 Match OS</option>
  30. <option value="dark">🌑 Dark</option>
  31. <option value="light">🌕 Light</option>
  32. </select>
  33. </div>
  34. <div id="global-links">
  35. <ul class="simple-boot">
  36. <li><a href="manual.html">Manual</a></li>
  37. <li><a href="lib.html">Standard library</a></li>
  38. <li> <a id="indexLink" href="theindex.html">Index</a></li>
  39. <li><a href="compiler/theindex.html">Compiler docs</a></li>
  40. <li><a href="https://nim-lang.github.io/fusion/theindex.html">Fusion docs</a></li>
  41. <li><a href="https://nim-lang.github.io/Nim/">devel</a>, <a href="https://nim-lang.org/documentation.html">stable</a></li>
  42. </ul>
  43. </div>
  44. <div id="searchInputDiv">
  45. Search: <input type="search" id="searchInput"
  46. oninput="search()" />
  47. </div>
  48. <ul class="simple simple-toc" id="toc-list">
  49. <li><a class="reference" id="testament_toc" href="#testament">Testament</a></li>
  50. <li><a class="reference" id="running-a-single-test_toc" href="#running-a-single-test">Running a single test</a></li>
  51. <li><a class="reference" id="running-a-single-test-suite_toc" href="#running-a-single-test-suite">Running a single test suite</a></li>
  52. <li><a class="reference" id="selecting-tests-by-pattern_toc" href="#selecting-tests-by-pattern">Selecting tests by pattern</a></li>
  53. <li><a class="reference" id="examples_toc" href="#examples">Examples</a></li>
  54. <li><a class="reference" id="limitationsslashbugs_toc" href="#limitationsslashbugs">Limitations/Bugs</a></li>
  55. <li>
  56. <a class="reference reference-toplevel" href="#6" id="56">Imports</a>
  57. </li>
  58. <li>
  59. <details open>
  60. <summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
  61. <ul class="simple simple-toc-section">
  62. <li><a class="reference" href="#ConsoleOutputFormatter" title="ConsoleOutputFormatter = ref object of OutputFormatter
  63. ## Have test results printed in color.
  64. ## Default is `auto` depending on `isatty(stdout)`, or override it with
  65. ## `-d:nimUnittestColor:auto|on|off`.
  66. ##
  67. ## Deprecated: Setting the environment variable `NIMTEST_COLOR` to `always`
  68. ## or `never` changes the default for the non-js target to true or false respectively.
  69. ## Deprecated: the environment variable `NIMTEST_NO_COLOR`, when set, changes the
  70. ## default to true, if `NIMTEST_COLOR` is undefined.
  71. ## Set the verbosity of test results.
  72. ## Default is `PRINT_ALL`, or override with:
  73. ## `-d:nimUnittestOutputLevel:PRINT_ALL|PRINT_FAILURES|PRINT_NONE`.
  74. ##
  75. ## Deprecated: the `NIMTEST_OUTPUT_LVL` environment variable is set for the non-js target.">ConsoleOutputFormatter</a></li>
  76. <li><a class="reference" href="#JUnitOutputFormatter" title="JUnitOutputFormatter = ref object of OutputFormatter">JUnitOutputFormatter</a></li>
  77. <li><a class="reference" href="#OutputFormatter" title="OutputFormatter = ref object of RootObj">OutputFormatter</a></li>
  78. <li><a class="reference" href="#OutputLevel" title="OutputLevel = enum
  79. PRINT_ALL, ## Print as much as possible.
  80. PRINT_FAILURES, ## Print only the failed tests.
  81. PRINT_NONE ## Print nothing.">OutputLevel</a></li>
  82. <li><a class="reference" href="#TestResult" title="TestResult = object
  83. suiteName*: string ## Name of the test suite that contains this test case.
  84. ## Can be ``nil`` if the test case is not in a suite.
  85. testName*: string ## Name of the test case
  86. status*: TestStatus">TestResult</a></li>
  87. <li><a class="reference" href="#TestStatus" title="TestStatus = enum
  88. OK, FAILED, SKIPPED">TestStatus</a></li>
  89. </ul>
  90. </details>
  91. </li>
  92. <li>
  93. <details open>
  94. <summary><a class="reference reference-toplevel" href="#8" id="58">Vars</a></summary>
  95. <ul class="simple simple-toc-section">
  96. <li><a class="reference" href="#abortOnError" title="abortOnError {.threadvar.}: bool">abortOnError</a></li>
  97. </ul>
  98. </details>
  99. </li>
  100. <li>
  101. <details open>
  102. <summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
  103. <ul class="simple simple-toc-section">
  104. <ul class="simple nested-toc-section">addOutputFormatter
  105. <li><a class="reference" href="#addOutputFormatter%2COutputFormatter" title="addOutputFormatter(formatter: OutputFormatter)">addOutputFormatter(formatter: OutputFormatter)</a></li>
  106. </ul>
  107. <ul class="simple nested-toc-section">checkpoint
  108. <li><a class="reference" href="#checkpoint%2Cstring" title="checkpoint(msg: string)">checkpoint(msg: string)</a></li>
  109. </ul>
  110. <ul class="simple nested-toc-section">close
  111. <li><a class="reference" href="#close%2CJUnitOutputFormatter" title="close(formatter: JUnitOutputFormatter)">close(formatter: JUnitOutputFormatter)</a></li>
  112. </ul>
  113. <ul class="simple nested-toc-section">defaultConsoleFormatter
  114. <li><a class="reference" href="#defaultConsoleFormatter" title="defaultConsoleFormatter(): ConsoleOutputFormatter">defaultConsoleFormatter(): ConsoleOutputFormatter</a></li>
  115. </ul>
  116. <ul class="simple nested-toc-section">delOutputFormatter
  117. <li><a class="reference" href="#delOutputFormatter%2COutputFormatter" title="delOutputFormatter(formatter: OutputFormatter)">delOutputFormatter(formatter: OutputFormatter)</a></li>
  118. </ul>
  119. <ul class="simple nested-toc-section">disableParamFiltering
  120. <li><a class="reference" href="#disableParamFiltering" title="disableParamFiltering()">disableParamFiltering()</a></li>
  121. </ul>
  122. <ul class="simple nested-toc-section">newConsoleOutputFormatter
  123. <li><a class="reference" href="#newConsoleOutputFormatter%2COutputLevel" title="newConsoleOutputFormatter(outputLevel: OutputLevel = outputLevelDefault;
  124. colorOutput = true): ConsoleOutputFormatter">newConsoleOutputFormatter(outputLevel: OutputLevel = outputLevelDefault;
  125. colorOutput = true): ConsoleOutputFormatter</a></li>
  126. </ul>
  127. <ul class="simple nested-toc-section">newJUnitOutputFormatter
  128. <li><a class="reference" href="#newJUnitOutputFormatter%2CStream" title="newJUnitOutputFormatter(stream: Stream): JUnitOutputFormatter">newJUnitOutputFormatter(stream: Stream): JUnitOutputFormatter</a></li>
  129. </ul>
  130. <ul class="simple nested-toc-section">resetOutputFormatters
  131. <li><a class="reference" href="#resetOutputFormatters" title="resetOutputFormatters()">resetOutputFormatters()</a></li>
  132. </ul>
  133. </ul>
  134. </details>
  135. </li>
  136. <li>
  137. <details open>
  138. <summary><a class="reference reference-toplevel" href="#14" id="64">Methods</a></summary>
  139. <ul class="simple simple-toc-section">
  140. <ul class="simple nested-toc-section">failureOccurred
  141. <li><a class="reference" href="#failureOccurred.e%2CConsoleOutputFormatter%2Cseq%5Bstring%5D%2Cstring" title="failureOccurred(formatter: ConsoleOutputFormatter; checkpoints: seq[string];
  142. stackTrace: string)">failureOccurred(formatter: ConsoleOutputFormatter; checkpoints: seq[string];
  143. stackTrace: string)</a></li>
  144. <li><a class="reference" href="#failureOccurred.e%2CJUnitOutputFormatter%2Cseq%5Bstring%5D%2Cstring" title="failureOccurred(formatter: JUnitOutputFormatter; checkpoints: seq[string];
  145. stackTrace: string)">failureOccurred(formatter: JUnitOutputFormatter; checkpoints: seq[string];
  146. stackTrace: string)</a></li>
  147. <li><a class="reference" href="#failureOccurred.e%2COutputFormatter%2Cseq%5Bstring%5D%2Cstring" title="failureOccurred(formatter: OutputFormatter; checkpoints: seq[string];
  148. stackTrace: string)">failureOccurred(formatter: OutputFormatter; checkpoints: seq[string];
  149. stackTrace: string)</a></li>
  150. </ul>
  151. <ul class="simple nested-toc-section">suiteEnded
  152. <li><a class="reference" href="#suiteEnded.e%2CConsoleOutputFormatter" title="suiteEnded(formatter: ConsoleOutputFormatter)">suiteEnded(formatter: ConsoleOutputFormatter)</a></li>
  153. <li><a class="reference" href="#suiteEnded.e%2CJUnitOutputFormatter" title="suiteEnded(formatter: JUnitOutputFormatter)">suiteEnded(formatter: JUnitOutputFormatter)</a></li>
  154. <li><a class="reference" href="#suiteEnded.e%2COutputFormatter" title="suiteEnded(formatter: OutputFormatter)">suiteEnded(formatter: OutputFormatter)</a></li>
  155. </ul>
  156. <ul class="simple nested-toc-section">suiteStarted
  157. <li><a class="reference" href="#suiteStarted.e%2CConsoleOutputFormatter%2Cstring" title="suiteStarted(formatter: ConsoleOutputFormatter; suiteName: string)">suiteStarted(formatter: ConsoleOutputFormatter; suiteName: string)</a></li>
  158. <li><a class="reference" href="#suiteStarted.e%2CJUnitOutputFormatter%2Cstring" title="suiteStarted(formatter: JUnitOutputFormatter; suiteName: string)">suiteStarted(formatter: JUnitOutputFormatter; suiteName: string)</a></li>
  159. <li><a class="reference" href="#suiteStarted.e%2COutputFormatter%2Cstring" title="suiteStarted(formatter: OutputFormatter; suiteName: string)">suiteStarted(formatter: OutputFormatter; suiteName: string)</a></li>
  160. </ul>
  161. <ul class="simple nested-toc-section">testEnded
  162. <li><a class="reference" href="#testEnded.e%2CConsoleOutputFormatter%2CTestResult" title="testEnded(formatter: ConsoleOutputFormatter; testResult: TestResult)">testEnded(formatter: ConsoleOutputFormatter; testResult: TestResult)</a></li>
  163. <li><a class="reference" href="#testEnded.e%2CJUnitOutputFormatter%2CTestResult" title="testEnded(formatter: JUnitOutputFormatter; testResult: TestResult)">testEnded(formatter: JUnitOutputFormatter; testResult: TestResult)</a></li>
  164. <li><a class="reference" href="#testEnded.e%2COutputFormatter%2CTestResult" title="testEnded(formatter: OutputFormatter; testResult: TestResult)">testEnded(formatter: OutputFormatter; testResult: TestResult)</a></li>
  165. </ul>
  166. <ul class="simple nested-toc-section">testStarted
  167. <li><a class="reference" href="#testStarted.e%2CConsoleOutputFormatter%2Cstring" title="testStarted(formatter: ConsoleOutputFormatter; testName: string)">testStarted(formatter: ConsoleOutputFormatter; testName: string)</a></li>
  168. <li><a class="reference" href="#testStarted.e%2CJUnitOutputFormatter%2Cstring" title="testStarted(formatter: JUnitOutputFormatter; testName: string)">testStarted(formatter: JUnitOutputFormatter; testName: string)</a></li>
  169. <li><a class="reference" href="#testStarted.e%2COutputFormatter%2Cstring" title="testStarted(formatter: OutputFormatter; testName: string)">testStarted(formatter: OutputFormatter; testName: string)</a></li>
  170. </ul>
  171. </ul>
  172. </details>
  173. </li>
  174. <li>
  175. <details open>
  176. <summary><a class="reference reference-toplevel" href="#17" id="67">Macros</a></summary>
  177. <ul class="simple simple-toc-section">
  178. <ul class="simple nested-toc-section">check
  179. <li><a class="reference" href="#check.m%2Cuntyped" title="check(conditions: untyped): untyped">check(conditions: untyped): untyped</a></li>
  180. </ul>
  181. <ul class="simple nested-toc-section">expect
  182. <li><a class="reference" href="#expect.m%2Cvarargs%5Btyped%5D%2Cuntyped" title="expect(exceptions: varargs[typed]; body: untyped): untyped">expect(exceptions: varargs[typed]; body: untyped): untyped</a></li>
  183. </ul>
  184. </ul>
  185. </details>
  186. </li>
  187. <li>
  188. <details open>
  189. <summary><a class="reference reference-toplevel" href="#18" id="68">Templates</a></summary>
  190. <ul class="simple simple-toc-section">
  191. <ul class="simple nested-toc-section">fail
  192. <li><a class="reference" href="#fail.t" title="fail()">fail()</a></li>
  193. </ul>
  194. <ul class="simple nested-toc-section">require
  195. <li><a class="reference" href="#require.t%2Cuntyped" title="require(conditions: untyped)">require(conditions: untyped)</a></li>
  196. </ul>
  197. <ul class="simple nested-toc-section">skip
  198. <li><a class="reference" href="#skip.t" title="skip()">skip()</a></li>
  199. </ul>
  200. <ul class="simple nested-toc-section">suite
  201. <li><a class="reference" href="#suite.t%2C%2C" title="suite(name, body)">suite(name, body)</a></li>
  202. </ul>
  203. <ul class="simple nested-toc-section">test
  204. <li><a class="reference" href="#test.t%2C%2C" title="test(name, body)">test(name, body)</a></li>
  205. </ul>
  206. </ul>
  207. </details>
  208. </li>
  209. </ul>
  210. </div>
  211. <div class="nine columns" id="content">
  212. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  213. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  214. <div id="tocRoot"></div>
  215. <p class="module-desc"><table class="docinfo" frame="void" rules="none"><col class="docinfo-name" /><col class="docinfo-content" /><tbody valign="top"><tr><th class="docinfo-name">Author:</th><td>Zahary Karadjov</td></tr>
  216. </tbody></table><p>This module implements boilerplate to make unit testing easy.</p>
  217. <p>The test status and name is printed after any output or traceback.</p>
  218. <p>Tests can be nested, however failure of a nested test will not mark the parent test as failed. Setup and teardown are inherited. Setup can be overridden locally.</p>
  219. <p>Compiled test files as well as <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">c</span> <span class="Operator">-</span><span class="Identifier">r</span> <span class="Operator">&lt;</span><span class="Identifier">testfile</span><span class="Operator">.</span><span class="Identifier">nim</span><span class="Operator">&gt;</span></span></tt> exit with 0 for success (no failed tests) or 1 for failure.</p>
  220. <h1><a class="toc-backref" id="testament" href="#testament">Testament</a></h1><p>Instead of <tt class="docutils literal"><span class="pre"><span class="Identifier">unittest</span></span></tt>, please consider using <a class="reference external" href="testament.html">the Testament tool</a> which offers process isolation for your tests.</p>
  221. <p>Alternatively using <tt class="docutils literal"><span class="pre"><span class="Keyword">when</span> <span class="Identifier">isMainModule</span><span class="Punctuation">:</span> <span class="Identifier">doAssert</span> <span class="Identifier">conditionHere</span></span></tt> is usually a much simpler solution for testing purposes.</p>
  222. <h1><a class="toc-backref" id="running-a-single-test" href="#running-a-single-test">Running a single test</a></h1><p>Specify the test name as a command line argument.</p>
  223. <p><pre class="listing"><span class="program">nim</span> <span class="option">c</span> <span class="option">-r</span> <span class="option">test</span> <span class="option">&quot;my test name&quot;</span> <span class="option">&quot;another test&quot;</span></pre></p>
  224. <p>Multiple arguments can be used.</p>
  225. <h1><a class="toc-backref" id="running-a-single-test-suite" href="#running-a-single-test-suite">Running a single test suite</a></h1><p>Specify the suite name delimited by <tt class="docutils literal"><span class="pre"><span class="StringLit">&quot;::&quot;</span></span></tt>.</p>
  226. <p><pre class="listing"><span class="program">nim</span> <span class="option">c</span> <span class="option">-r</span> <span class="option">test</span> <span class="option">&quot;my test name::&quot;</span></pre></p>
  227. <h1><a class="toc-backref" id="selecting-tests-by-pattern" href="#selecting-tests-by-pattern">Selecting tests by pattern</a></h1><p>A single <tt class="docutils literal"><span class="pre">&quot;*&quot;</span></tt> can be used for globbing.</p>
  228. <p>Delimit the end of a suite name with <tt class="docutils literal"><span class="pre"><span class="StringLit">&quot;::&quot;</span></span></tt>.</p>
  229. <p>Tests matching <strong>any</strong> of the arguments are executed.</p>
  230. <p><pre class="listing"><span class="program">nim</span> <span class="option">c</span> <span class="option">-r</span> <span class="option">test</span> <span class="option">fast_suite::mytest1</span> <span class="option">fast_suite::mytest2</span>
  231. <span class="program">nim</span> <span class="option">c</span> <span class="option">-r</span> <span class="option">test</span> <span class="option">&quot;fast_suite::mytest*&quot;</span>
  232. <span class="program">nim</span> <span class="option">c</span> <span class="option">-r</span> <span class="option">test</span> <span class="option">&quot;auth*::&quot;</span> <span class="option">&quot;crypto::hashing*&quot;</span>
  233. <span class="Comment"># Run suites starting with 'bug #' and standalone tests starting with '#'</span>
  234. <span class="program">nim</span> <span class="option">c</span> <span class="option">-r</span> <span class="option">test</span> <span class="option">'bug #*::'</span> <span class="option">'::#*'</span></pre></p>
  235. <h1><a class="toc-backref" id="examples" href="#examples">Examples</a></h1><p><pre class="listing"><span class="Identifier">suite</span> <span class="StringLit">&quot;description for this stuff&quot;</span><span class="Punctuation">:</span>
  236. <span class="Identifier">echo</span> <span class="StringLit">&quot;suite setup: run once before the tests&quot;</span>
  237. <span class="Identifier">setup</span><span class="Punctuation">:</span>
  238. <span class="Identifier">echo</span> <span class="StringLit">&quot;run before each test&quot;</span>
  239. <span class="Identifier">teardown</span><span class="Punctuation">:</span>
  240. <span class="Identifier">echo</span> <span class="StringLit">&quot;run after each test&quot;</span>
  241. <span class="Identifier">test</span> <span class="StringLit">&quot;essential truths&quot;</span><span class="Punctuation">:</span>
  242. <span class="Comment"># give up and stop if this fails</span>
  243. <span class="Identifier">require</span><span class="Punctuation">(</span><span class="Identifier">true</span><span class="Punctuation">)</span>
  244. <span class="Identifier">test</span> <span class="StringLit">&quot;slightly less obvious stuff&quot;</span><span class="Punctuation">:</span>
  245. <span class="Comment"># print a nasty message and move on, skipping</span>
  246. <span class="Comment"># the remainder of this block</span>
  247. <span class="Identifier">check</span><span class="Punctuation">(</span><span class="DecNumber">1</span> <span class="Operator">!=</span> <span class="DecNumber">1</span><span class="Punctuation">)</span>
  248. <span class="Identifier">check</span><span class="Punctuation">(</span><span class="StringLit">&quot;asd&quot;</span><span class="Punctuation">[</span><span class="DecNumber">2</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="CharLit">'d'</span><span class="Punctuation">)</span>
  249. <span class="Identifier">test</span> <span class="StringLit">&quot;out of bounds error is thrown on bad access&quot;</span><span class="Punctuation">:</span>
  250. <span class="Keyword">let</span> <span class="Identifier">v</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">]</span> <span class="Comment"># you can do initialization here</span>
  251. <span class="Identifier">expect</span><span class="Punctuation">(</span><span class="Identifier">IndexDefect</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
  252. <span class="Keyword">discard</span> <span class="Identifier">v</span><span class="Punctuation">[</span><span class="DecNumber">4</span><span class="Punctuation">]</span>
  253. <span class="Identifier">echo</span> <span class="StringLit">&quot;suite teardown: run once after the tests&quot;</span></pre></p>
  254. <h1><a class="toc-backref" id="limitationsslashbugs" href="#limitationsslashbugs">Limitations/Bugs</a></h1><p>Since <tt class="docutils literal"><span class="pre"><span class="Identifier">check</span></span></tt> will rewrite some expressions for supporting checkpoints (namely assigns expressions to variables), some type conversions are not supported. For example <tt class="docutils literal"><span class="pre"><span class="Identifier">check</span> <span class="FloatNumber">4.0</span> <span class="Operator">==</span> <span class="DecNumber">2</span> <span class="Operator">+</span> <span class="DecNumber">2</span></span></tt> won't work. But <tt class="docutils literal"><span class="pre"><span class="Identifier">doAssert</span> <span class="FloatNumber">4.0</span> <span class="Operator">==</span> <span class="DecNumber">2</span> <span class="Operator">+</span> <span class="DecNumber">2</span></span></tt> works. Make sure both sides of the operator (such as <tt class="docutils literal"><span class="pre"><span class="Operator">==</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Operator">&gt;=</span></span></tt> and so on) have the same type. </p>
  255. </p>
  256. <div class="section" id="6">
  257. <h1><a class="toc-backref" href="#6">Imports</a></h1>
  258. <dl class="item">
  259. <a class="reference external" href="since.html">since</a>, <a class="reference external" href="exitprocs.html">exitprocs</a>, <a class="reference external" href="assertions.html">assertions</a>, <a class="reference external" href="syncio.html">syncio</a>, <a class="reference external" href="macros.html">macros</a>, <a class="reference external" href="strutils.html">strutils</a>, <a class="reference external" href="streams.html">streams</a>, <a class="reference external" href="times.html">times</a>, <a class="reference external" href="sets.html">sets</a>, <a class="reference external" href="sequtils.html">sequtils</a>, <a class="reference external" href="os.html">os</a>, <a class="reference external" href="terminal.html">terminal</a>
  260. </dl>
  261. </div>
  262. <div class="section" id="7">
  263. <h1><a class="toc-backref" href="#7">Types</a></h1>
  264. <dl class="item">
  265. <div id="ConsoleOutputFormatter">
  266. <dt><pre><a href="unittest.html#ConsoleOutputFormatter"><span class="Identifier">ConsoleOutputFormatter</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="unittest.html#OutputFormatter"><span class="Identifier">OutputFormatter</span></a>
  267. <span class="Comment">## Have test results printed in color.</span>
  268. <span class="Comment">## Default is `auto` depending on `isatty(stdout)`, or override it with</span>
  269. <span class="Comment">## `-d:nimUnittestColor:auto|on|off`.</span>
  270. <span class="Comment">## </span>
  271. <span class="Comment">## Deprecated: Setting the environment variable `NIMTEST_COLOR` to `always`</span>
  272. <span class="Comment">## or `never` changes the default for the non-js target to true or false respectively.</span>
  273. <span class="Comment">## Deprecated: the environment variable `NIMTEST_NO_COLOR`, when set, changes the</span>
  274. <span class="Comment">## default to true, if `NIMTEST_COLOR` is undefined.</span>
  275. <span class="Comment">## Set the verbosity of test results.</span>
  276. <span class="Comment">## Default is `PRINT_ALL`, or override with:</span>
  277. <span class="Comment">## `-d:nimUnittestOutputLevel:PRINT_ALL|PRINT_FAILURES|PRINT_NONE`.</span>
  278. <span class="Comment">## </span>
  279. <span class="Comment">## Deprecated: the `NIMTEST_OUTPUT_LVL` environment variable is set for the non-js target.</span></pre></dt>
  280. <dd>
  281. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L145" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  282. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L145" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  283. </dd>
  284. </div>
  285. <div id="JUnitOutputFormatter">
  286. <dt><pre><a href="unittest.html#JUnitOutputFormatter"><span class="Identifier">JUnitOutputFormatter</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="unittest.html#OutputFormatter"><span class="Identifier">OutputFormatter</span></a></pre></dt>
  287. <dd>
  288. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L164" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  289. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L164" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  290. </dd>
  291. </div>
  292. <div id="OutputFormatter">
  293. <dt><pre><a href="unittest.html#OutputFormatter"><span class="Identifier">OutputFormatter</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#RootObj"><span class="Identifier">RootObj</span></a></pre></dt>
  294. <dd>
  295. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L143" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  296. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L143" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  297. </dd>
  298. </div>
  299. <div id="OutputLevel">
  300. <dt><pre><a href="unittest.html#OutputLevel"><span class="Identifier">OutputLevel</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
  301. <span class="Identifier">PRINT_ALL</span><span class="Other">,</span> <span class="Comment">## Print as much as possible.</span>
  302. <span class="Identifier">PRINT_FAILURES</span><span class="Other">,</span> <span class="Comment">## Print only the failed tests.</span>
  303. <span class="Identifier">PRINT_NONE</span> <span class="Comment">## Print nothing.</span></pre></dt>
  304. <dd>
  305. The output verbosity of the tests.
  306. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L130" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  307. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L130" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  308. </dd>
  309. </div>
  310. <div id="TestResult">
  311. <dt><pre><a href="unittest.html#TestResult"><span class="Identifier">TestResult</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
  312. <span class="Identifier">suiteName</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Comment">## Name of the test suite that contains this test case.</span>
  313. <span class="Comment">## Can be ``nil`` if the test case is not in a suite.</span>
  314. <span class="Identifier">testName</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Comment">## Name of the test case</span>
  315. <span class="Identifier">status</span><span class="Operator">*</span><span class="Other">:</span> <a href="unittest.html#TestStatus"><span class="Identifier">TestStatus</span></a></pre></dt>
  316. <dd>
  317. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L135" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  318. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L135" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  319. </dd>
  320. </div>
  321. <div id="TestStatus">
  322. <dt><pre><a href="unittest.html#TestStatus"><span class="Identifier">TestStatus</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
  323. <span class="Identifier">OK</span><span class="Other">,</span> <span class="Identifier">FAILED</span><span class="Other">,</span> <span class="Identifier">SKIPPED</span></pre></dt>
  324. <dd>
  325. The status of a test when it is done.
  326. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L125" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  327. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L125" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  328. </dd>
  329. </div>
  330. </dl>
  331. </div>
  332. <div class="section" id="8">
  333. <h1><a class="toc-backref" href="#8">Vars</a></h1>
  334. <dl class="item">
  335. <div id="abortOnError">
  336. <dt><pre><a href="unittest.html#abortOnError"><span class="Identifier">abortOnError</span></a> {.<span class="Identifier">threadvar</span>.}<span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a></pre></dt>
  337. <dd>
  338. <p>Set to true in order to quit immediately on fail. Default is false, or override with <tt class="docutils literal"><span class="pre"><span class="Operator">-</span><span class="Identifier">d</span><span class="Punctuation">:</span><span class="Identifier">nimUnittestAbortOnError</span><span class="Punctuation">:</span><span class="Identifier">on</span><span class="Operator">|</span><span class="Identifier">off</span></span></tt>.</p>
  339. <p>Deprecated: can also override depending on whether <tt class="docutils literal"><span class="pre"><span class="Identifier">NIMTEST_ABORT_ON_ERROR</span></span></tt> environment variable is set.</p>
  340. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L171" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  341. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L171" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  342. </dd>
  343. </div>
  344. </dl>
  345. </div>
  346. <div class="section" id="12">
  347. <h1><a class="toc-backref" href="#12">Procs</a></h1>
  348. <dl class="item">
  349. <div id="addOutputFormatter-procs-all">
  350. <div id="addOutputFormatter,OutputFormatter">
  351. <dt><pre><span class="Keyword">proc</span> <a href="#addOutputFormatter%2COutputFormatter"><span class="Identifier">addOutputFormatter</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#OutputFormatter"><span class="Identifier">OutputFormatter</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  352. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  353. <dd>
  354. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L213" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  355. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L213" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  356. </dd>
  357. </div>
  358. </div>
  359. <div id="checkpoint-procs-all">
  360. <div id="checkpoint,string">
  361. <dt><pre><span class="Keyword">proc</span> <a href="#checkpoint%2Cstring"><span class="Identifier">checkpoint</span></a><span class="Other">(</span><span class="Identifier">msg</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  362. <dd>
  363. <p>Set a checkpoint identified by <tt class="docutils literal"><span class="pre"><span class="Identifier">msg</span></span></tt>. Upon test failure all checkpoints encountered so far are printed out. Example:</p>
  364. <p><pre class="listing"><span class="Identifier">checkpoint</span><span class="Punctuation">(</span><span class="StringLit">&quot;Checkpoint A&quot;</span><span class="Punctuation">)</span>
  365. <span class="Identifier">check</span><span class="Punctuation">(</span><span class="Punctuation">(</span><span class="DecNumber">42</span><span class="Punctuation">,</span> <span class="StringLit">&quot;the Answer to life and everything&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="StringLit">&quot;a&quot;</span><span class="Punctuation">)</span><span class="Punctuation">)</span>
  366. <span class="Identifier">checkpoint</span><span class="Punctuation">(</span><span class="StringLit">&quot;Checkpoint B&quot;</span><span class="Punctuation">)</span></pre></p>
  367. <p>outputs &quot;Checkpoint A&quot; once it fails.</p>
  368. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L581" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  369. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L581" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  370. </dd>
  371. </div>
  372. </div>
  373. <div id="close-procs-all">
  374. <div id="close,JUnitOutputFormatter">
  375. <dt><pre><span class="Keyword">proc</span> <a href="#close%2CJUnitOutputFormatter"><span class="Identifier">close</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#JUnitOutputFormatter"><span class="Identifier">JUnitOutputFormatter</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
  376. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  377. <dd>
  378. Completes the report and closes the underlying stream.
  379. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L336" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  380. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L336" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  381. </dd>
  382. </div>
  383. </div>
  384. <div id="defaultConsoleFormatter-procs-all">
  385. <div id="defaultConsoleFormatter">
  386. <dt><pre><span class="Keyword">proc</span> <a href="#defaultConsoleFormatter"><span class="Identifier">defaultConsoleFormatter</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="unittest.html#ConsoleOutputFormatter"><span class="Identifier">ConsoleOutputFormatter</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span>
  387. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadEnvEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  388. <dd>
  389. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L252" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  390. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L252" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  391. </dd>
  392. </div>
  393. </div>
  394. <div id="delOutputFormatter-procs-all">
  395. <div id="delOutputFormatter,OutputFormatter">
  396. <dt><pre><span class="Keyword">proc</span> <a href="#delOutputFormatter%2COutputFormatter"><span class="Identifier">delOutputFormatter</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#OutputFormatter"><span class="Identifier">OutputFormatter</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  397. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  398. <dd>
  399. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L216" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  400. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L216" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  401. </dd>
  402. </div>
  403. </div>
  404. <div id="disableParamFiltering-procs-all">
  405. <div id="disableParamFiltering">
  406. <dt><pre><span class="Keyword">proc</span> <a href="#disableParamFiltering"><span class="Identifier">disableParamFiltering</span></a><span class="Other">(</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  407. <dd>
  408. disables filtering tests with the command line params
  409. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L785" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  410. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L785" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  411. </dd>
  412. </div>
  413. </div>
  414. <div id="newConsoleOutputFormatter-procs-all">
  415. <div id="newConsoleOutputFormatter,OutputLevel">
  416. <dt><pre><span class="Keyword">proc</span> <a href="#newConsoleOutputFormatter%2COutputLevel"><span class="Identifier">newConsoleOutputFormatter</span></a><span class="Other">(</span><span class="Identifier">outputLevel</span><span class="Other">:</span> <a href="unittest.html#OutputLevel"><span class="Identifier">OutputLevel</span></a> <span class="Other">=</span> <span class="Identifier">outputLevelDefault</span><span class="Other">;</span>
  417. <span class="Identifier">colorOutput</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">)</span><span class="Other">:</span> <a href="unittest.html#ConsoleOutputFormatter"><span class="Identifier">ConsoleOutputFormatter</span></a> {.
  418. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  419. <dd>
  420. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L223" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  421. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L223" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  422. </dd>
  423. </div>
  424. </div>
  425. <div id="newJUnitOutputFormatter-procs-all">
  426. <div id="newJUnitOutputFormatter,Stream">
  427. <dt><pre><span class="Keyword">proc</span> <a href="#newJUnitOutputFormatter%2CStream"><span class="Identifier">newJUnitOutputFormatter</span></a><span class="Other">(</span><span class="Identifier">stream</span><span class="Other">:</span> <a href="streams.html#Stream"><span class="Identifier">Stream</span></a><span class="Other">)</span><span class="Other">:</span> <a href="unittest.html#JUnitOutputFormatter"><span class="Identifier">JUnitOutputFormatter</span></a> {.
  428. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  429. <dd>
  430. Creates a formatter that writes report to the specified stream in JUnit format. The <tt class="docutils literal"><span class="pre">stream</span></tt> is NOT closed automatically when the test are finished, because the formatter has no way to know when all tests are finished. You should invoke formatter.close() to finalize the report.
  431. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L321" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  432. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L321" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  433. </dd>
  434. </div>
  435. </div>
  436. <div id="resetOutputFormatters-procs-all">
  437. <div id="resetOutputFormatters">
  438. <dt><pre><span class="Keyword">proc</span> <a href="#resetOutputFormatters"><span class="Identifier">resetOutputFormatters</span></a><span class="Other">(</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  439. <dd>
  440. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L220" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  441. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L220" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  442. </dd>
  443. </div>
  444. </div>
  445. </dl>
  446. </div>
  447. <div class="section" id="14">
  448. <h1><a class="toc-backref" href="#14">Methods</a></h1>
  449. <dl class="item">
  450. <div id="failureOccurred-methods-all">
  451. <div id="failureOccurred.e,ConsoleOutputFormatter,seq[string],string">
  452. <dt><pre><span class="Keyword">method</span> <a href="#failureOccurred.e%2CConsoleOutputFormatter%2Cseq%5Bstring%5D%2Cstring"><span class="Identifier">failureOccurred</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#ConsoleOutputFormatter"><span class="Identifier">ConsoleOutputFormatter</span></a><span class="Other">;</span>
  453. <span class="Identifier">checkpoints</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">stackTrace</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.
  454. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  455. <dd>
  456. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L274" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  457. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L274" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  458. </dd>
  459. </div>
  460. <div id="failureOccurred.e,JUnitOutputFormatter,seq[string],string">
  461. <dt><pre><span class="Keyword">method</span> <a href="#failureOccurred.e%2CJUnitOutputFormatter%2Cseq%5Bstring%5D%2Cstring"><span class="Identifier">failureOccurred</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#JUnitOutputFormatter"><span class="Identifier">JUnitOutputFormatter</span></a><span class="Other">;</span>
  462. <span class="Identifier">checkpoints</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">stackTrace</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.
  463. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  464. <dd>
  465. <tt class="docutils literal"><span class="pre">stackTrace</span></tt> is provided only if the failure occurred due to an exception. <tt class="docutils literal"><span class="pre">checkpoints</span></tt> is never <tt class="docutils literal"><span class="pre">nil</span></tt>.
  466. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L349" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  467. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L349" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  468. </dd>
  469. </div>
  470. <div id="failureOccurred.e,OutputFormatter,seq[string],string">
  471. <dt><pre><span class="Keyword">method</span> <a href="#failureOccurred.e%2COutputFormatter%2Cseq%5Bstring%5D%2Cstring"><span class="Identifier">failureOccurred</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#OutputFormatter"><span class="Identifier">OutputFormatter</span></a><span class="Other">;</span> <span class="Identifier">checkpoints</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span><span class="Other">;</span>
  472. <span class="Identifier">stackTrace</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.<span class="Identifier">base</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  473. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  474. <dd>
  475. <tt class="docutils literal"><span class="pre">stackTrace</span></tt> is provided only if the failure occurred due to an exception. <tt class="docutils literal"><span class="pre">checkpoints</span></tt> is never <tt class="docutils literal"><span class="pre">nil</span></tt>.
  476. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L203" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  477. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L203" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  478. </dd>
  479. </div>
  480. </div>
  481. <div id="suiteEnded-methods-all">
  482. <div id="suiteEnded.e,ConsoleOutputFormatter">
  483. <dt><pre><span class="Keyword">method</span> <a href="#suiteEnded.e%2CConsoleOutputFormatter"><span class="Identifier">suiteEnded</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#ConsoleOutputFormatter"><span class="Identifier">ConsoleOutputFormatter</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  484. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  485. <dd>
  486. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L303" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  487. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L303" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  488. </dd>
  489. </div>
  490. <div id="suiteEnded.e,JUnitOutputFormatter">
  491. <dt><pre><span class="Keyword">method</span> <a href="#suiteEnded.e%2CJUnitOutputFormatter"><span class="Identifier">suiteEnded</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#JUnitOutputFormatter"><span class="Identifier">JUnitOutputFormatter</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
  492. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  493. <dd>
  494. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L398" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  495. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L398" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  496. </dd>
  497. </div>
  498. <div id="suiteEnded.e,OutputFormatter">
  499. <dt><pre><span class="Keyword">method</span> <a href="#suiteEnded.e%2COutputFormatter"><span class="Identifier">suiteEnded</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#OutputFormatter"><span class="Identifier">OutputFormatter</span></a><span class="Other">)</span> {.<span class="Identifier">base</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  500. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  501. <dd>
  502. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L210" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  503. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L210" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  504. </dd>
  505. </div>
  506. </div>
  507. <div id="suiteStarted-methods-all">
  508. <div id="suiteStarted.e,ConsoleOutputFormatter,string">
  509. <dt><pre><span class="Keyword">method</span> <a href="#suiteStarted.e%2CConsoleOutputFormatter%2Cstring"><span class="Identifier">suiteStarted</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#ConsoleOutputFormatter"><span class="Identifier">ConsoleOutputFormatter</span></a><span class="Other">;</span> <span class="Identifier">suiteName</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.
  510. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  511. <dd>
  512. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L262" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  513. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L262" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  514. </dd>
  515. </div>
  516. <div id="suiteStarted.e,JUnitOutputFormatter,string">
  517. <dt><pre><span class="Keyword">method</span> <a href="#suiteStarted.e%2CJUnitOutputFormatter%2Cstring"><span class="Identifier">suiteStarted</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#JUnitOutputFormatter"><span class="Identifier">JUnitOutputFormatter</span></a><span class="Other">;</span> <span class="Identifier">suiteName</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.
  518. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  519. <dd>
  520. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L341" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  521. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L341" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  522. </dd>
  523. </div>
  524. <div id="suiteStarted.e,OutputFormatter,string">
  525. <dt><pre><span class="Keyword">method</span> <a href="#suiteStarted.e%2COutputFormatter%2Cstring"><span class="Identifier">suiteStarted</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#OutputFormatter"><span class="Identifier">OutputFormatter</span></a><span class="Other">;</span> <span class="Identifier">suiteName</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.<span class="Identifier">base</span><span class="Other">,</span>
  526. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  527. <dd>
  528. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L199" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  529. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L199" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  530. </dd>
  531. </div>
  532. </div>
  533. <div id="testEnded-methods-all">
  534. <div id="testEnded.e,ConsoleOutputFormatter,TestResult">
  535. <dt><pre><span class="Keyword">method</span> <a href="#testEnded.e%2CConsoleOutputFormatter%2CTestResult"><span class="Identifier">testEnded</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#ConsoleOutputFormatter"><span class="Identifier">ConsoleOutputFormatter</span></a><span class="Other">;</span> <span class="Identifier">testResult</span><span class="Other">:</span> <a href="unittest.html#TestResult"><span class="Identifier">TestResult</span></a><span class="Other">)</span> {.
  536. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  537. <dd>
  538. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L282" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  539. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L282" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  540. </dd>
  541. </div>
  542. <div id="testEnded.e,JUnitOutputFormatter,TestResult">
  543. <dt><pre><span class="Keyword">method</span> <a href="#testEnded.e%2CJUnitOutputFormatter%2CTestResult"><span class="Identifier">testEnded</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#JUnitOutputFormatter"><span class="Identifier">JUnitOutputFormatter</span></a><span class="Other">;</span> <span class="Identifier">testResult</span><span class="Other">:</span> <a href="unittest.html#TestResult"><span class="Identifier">TestResult</span></a><span class="Other">)</span> {.
  544. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span>
  545. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  546. <dd>
  547. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L357" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  548. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L357" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  549. </dd>
  550. </div>
  551. <div id="testEnded.e,OutputFormatter,TestResult">
  552. <dt><pre><span class="Keyword">method</span> <a href="#testEnded.e%2COutputFormatter%2CTestResult"><span class="Identifier">testEnded</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#OutputFormatter"><span class="Identifier">OutputFormatter</span></a><span class="Other">;</span> <span class="Identifier">testResult</span><span class="Other">:</span> <a href="unittest.html#TestResult"><span class="Identifier">TestResult</span></a><span class="Other">)</span> {.<span class="Identifier">base</span><span class="Other">,</span>
  553. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  554. <dd>
  555. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L208" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  556. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L208" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  557. </dd>
  558. </div>
  559. </div>
  560. <div id="testStarted-methods-all">
  561. <div id="testStarted.e,ConsoleOutputFormatter,string">
  562. <dt><pre><span class="Keyword">method</span> <a href="#testStarted.e%2CConsoleOutputFormatter%2Cstring"><span class="Identifier">testStarted</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#ConsoleOutputFormatter"><span class="Identifier">ConsoleOutputFormatter</span></a><span class="Other">;</span> <span class="Identifier">testName</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.
  563. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  564. <dd>
  565. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L271" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  566. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L271" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  567. </dd>
  568. </div>
  569. <div id="testStarted.e,JUnitOutputFormatter,string">
  570. <dt><pre><span class="Keyword">method</span> <a href="#testStarted.e%2CJUnitOutputFormatter%2Cstring"><span class="Identifier">testStarted</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#JUnitOutputFormatter"><span class="Identifier">JUnitOutputFormatter</span></a><span class="Other">;</span> <span class="Identifier">testName</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.
  571. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  572. <dd>
  573. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L344" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  574. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L344" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  575. </dd>
  576. </div>
  577. <div id="testStarted.e,OutputFormatter,string">
  578. <dt><pre><span class="Keyword">method</span> <a href="#testStarted.e%2COutputFormatter%2Cstring"><span class="Identifier">testStarted</span></a><span class="Other">(</span><span class="Identifier">formatter</span><span class="Other">:</span> <a href="unittest.html#OutputFormatter"><span class="Identifier">OutputFormatter</span></a><span class="Other">;</span> <span class="Identifier">testName</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.<span class="Identifier">base</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span>
  579. <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  580. <dd>
  581. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L201" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  582. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L201" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  583. </dd>
  584. </div>
  585. </div>
  586. </dl>
  587. </div>
  588. <div class="section" id="17">
  589. <h1><a class="toc-backref" href="#17">Macros</a></h1>
  590. <dl class="item">
  591. <div id="check-macros-all">
  592. <div id="check.m,untyped">
  593. <dt><pre><span class="Keyword">macro</span> <a href="#check.m%2Cuntyped"><span class="Identifier">check</span></a><span class="Other">(</span><span class="Identifier">conditions</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a></pre></dt>
  594. <dd>
  595. Verify if a statement or a list of statements is true. A helpful error message and set checkpoints are printed out on failure (if <tt class="docutils literal"><span class="pre">outputLevel</span></tt> is not <tt class="docutils literal"><span class="pre">PRINT_NONE</span></tt>).
  596. <p><strong class="examples_text">Example:</strong></p>
  597. <pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">strutils</span>
  598. <span class="Identifier">check</span><span class="Punctuation">(</span><span class="StringLit">&quot;AKB48&quot;</span><span class="Operator">.</span><span class="Identifier">toLowerAscii</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;akb48&quot;</span><span class="Punctuation">)</span>
  599. <span class="Keyword">let</span> <span class="Identifier">teams</span> <span class="Operator">=</span> <span class="Punctuation">{</span><span class="Punctuation">'</span><span class="Identifier">A</span><span class="CharLit">', '</span><span class="Identifier">K</span><span class="CharLit">', '</span><span class="Identifier">B</span><span class="CharLit">', '</span><span class="DecNumber">4'</span><span class="Punctuation">,</span> <span class="CharLit">'8'</span><span class="Punctuation">}</span>
  600. <span class="Identifier">check</span><span class="Punctuation">:</span>
  601. <span class="StringLit">&quot;AKB48&quot;</span><span class="Operator">.</span><span class="Identifier">toLowerAscii</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;akb48&quot;</span>
  602. <span class="CharLit">'C'</span> <span class="Keyword">notin</span> <span class="Identifier">teams</span></pre>
  603. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L642" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  604. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L642" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  605. </dd>
  606. </div>
  607. </div>
  608. <div id="expect-macros-all">
  609. <div id="expect.m,varargs[typed],untyped">
  610. <dt><pre><span class="Keyword">macro</span> <a href="#expect.m%2Cvarargs%5Btyped%5D%2Cuntyped"><span class="Identifier">expect</span></a><span class="Other">(</span><span class="Identifier">exceptions</span><span class="Other">:</span> <a href="system.html#varargs"><span class="Identifier">varargs</span></a><span class="Other">[</span><a href="system.html#typed"><span class="Identifier">typed</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a></pre></dt>
  611. <dd>
  612. Test if <tt class="docutils literal"><span class="pre"><span class="Identifier">body</span></span></tt> raises an exception found in the passed <tt class="docutils literal"><span class="pre"><span class="Identifier">exceptions</span></span></tt>. The test passes if the raised exception is part of the acceptable exceptions. Otherwise, it fails.
  613. <p><strong class="examples_text">Example:</strong></p>
  614. <pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Punctuation">[</span><span class="Identifier">math</span><span class="Punctuation">,</span> <span class="Identifier">random</span><span class="Punctuation">,</span> <span class="Identifier">strutils</span><span class="Punctuation">]</span>
  615. <span class="Keyword">proc</span> <span class="Identifier">defectiveRobot</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">=</span>
  616. <span class="Identifier">randomize</span><span class="Punctuation">(</span><span class="Punctuation">)</span>
  617. <span class="Keyword">case</span> <span class="Identifier">rand</span><span class="Punctuation">(</span><span class="FloatNumber">1.</span><span class="Operator">.</span><span class="DecNumber">4</span><span class="Punctuation">)</span>
  618. <span class="Keyword">of</span> <span class="DecNumber">1</span><span class="Punctuation">:</span> <span class="Keyword">raise</span> <span class="Identifier">newException</span><span class="Punctuation">(</span><span class="Identifier">OSError</span><span class="Punctuation">,</span> <span class="StringLit">&quot;CANNOT COMPUTE!&quot;</span><span class="Punctuation">)</span>
  619. <span class="Keyword">of</span> <span class="DecNumber">2</span><span class="Punctuation">:</span> <span class="Keyword">discard</span> <span class="Identifier">parseInt</span><span class="Punctuation">(</span><span class="StringLit">&quot;Hello World!&quot;</span><span class="Punctuation">)</span>
  620. <span class="Keyword">of</span> <span class="DecNumber">3</span><span class="Punctuation">:</span> <span class="Keyword">raise</span> <span class="Identifier">newException</span><span class="Punctuation">(</span><span class="Identifier">IOError</span><span class="Punctuation">,</span> <span class="StringLit">&quot;I can't do that Dave.&quot;</span><span class="Punctuation">)</span>
  621. <span class="Keyword">else</span><span class="Punctuation">:</span> <span class="Identifier">assert</span> <span class="DecNumber">2</span> <span class="Operator">+</span> <span class="DecNumber">2</span> <span class="Operator">==</span> <span class="DecNumber">5</span>
  622. <span class="Identifier">expect</span> <span class="Identifier">IOError</span><span class="Punctuation">,</span> <span class="Identifier">OSError</span><span class="Punctuation">,</span> <span class="Identifier">ValueError</span><span class="Punctuation">,</span> <span class="Identifier">AssertionDefect</span><span class="Punctuation">:</span>
  623. <span class="Identifier">defectiveRobot</span><span class="Punctuation">(</span><span class="Punctuation">)</span></pre>
  624. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L746" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  625. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L746" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  626. </dd>
  627. </div>
  628. </div>
  629. </dl>
  630. </div>
  631. <div class="section" id="18">
  632. <h1><a class="toc-backref" href="#18">Templates</a></h1>
  633. <dl class="item">
  634. <div id="fail-templates-all">
  635. <div id="fail.t">
  636. <dt><pre><span class="Keyword">template</span> <a href="#fail.t"><span class="Identifier">fail</span></a><span class="Other">(</span><span class="Other">)</span></pre></dt>
  637. <dd>
  638. <p>Print out the checkpoints encountered so far and quit if <tt class="docutils literal"><span class="pre">abortOnError</span></tt> is true. Otherwise, erase the checkpoints and indicate the test has failed (change exit code and test status). This template is useful for debugging, but is otherwise mostly used internally. Example:</p>
  639. <p><pre class="listing"><span class="Identifier">checkpoint</span><span class="Punctuation">(</span><span class="StringLit">&quot;Checkpoint A&quot;</span><span class="Punctuation">)</span>
  640. <span class="Identifier">complicatedProcInThread</span><span class="Punctuation">(</span><span class="Punctuation">)</span>
  641. <span class="Identifier">fail</span><span class="Punctuation">(</span><span class="Punctuation">)</span></pre></p>
  642. <p>outputs &quot;Checkpoint A&quot; before quitting.</p>
  643. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L595" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  644. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L595" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  645. </dd>
  646. </div>
  647. </div>
  648. <div id="require-templates-all">
  649. <div id="require.t,untyped">
  650. <dt><pre><span class="Keyword">template</span> <a href="#require.t%2Cuntyped"><span class="Identifier">require</span></a><span class="Other">(</span><span class="Identifier">conditions</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">)</span></pre></dt>
  651. <dd>
  652. Same as <tt class="docutils literal"><span class="pre"><span class="Identifier">check</span></span></tt> except any failed test causes the program to quit immediately. Any teardown statements are not executed and the failed test output is not generated.
  653. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L736" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  654. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L736" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  655. </dd>
  656. </div>
  657. </div>
  658. <div id="skip-templates-all">
  659. <div id="skip.t">
  660. <dt><pre><span class="Keyword">template</span> <a href="#skip.t"><span class="Identifier">skip</span></a><span class="Other">(</span><span class="Other">)</span></pre></dt>
  661. <dd>
  662. <p>Mark the test as skipped. Should be used directly in case when it is not possible to perform test for reasons depending on outer environment, or certain application logic conditions or configurations. The test code is still executed.</p>
  663. <p><pre class="listing"><span class="Keyword">if</span> <span class="Keyword">not</span> <span class="Identifier">isGLContextCreated</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
  664. <span class="Identifier">skip</span><span class="Punctuation">(</span><span class="Punctuation">)</span></pre></p>
  665. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L627" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  666. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L627" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  667. </dd>
  668. </div>
  669. </div>
  670. <div id="suite-templates-all">
  671. <div id="suite.t,,">
  672. <dt><pre><span class="Keyword">template</span> <a href="#suite.t%2C%2C"><span class="Identifier">suite</span></a><span class="Other">(</span><span class="Identifier">name</span><span class="Other">,</span> <span class="Identifier">body</span><span class="Other">)</span> {.<span class="Identifier">dirty</span>.}</pre></dt>
  673. <dd>
  674. <p>Declare a test suite identified by <tt class="docutils literal"><span class="pre"><span class="Identifier">name</span></span></tt> with optional <tt class="docutils literal"><span class="pre">setup</span></tt> and/or <tt class="docutils literal"><span class="pre">teardown</span></tt> section.</p>
  675. <p>A test suite is a series of one or more related tests sharing a common fixture (<tt class="docutils literal"><span class="pre">setup</span></tt>, <tt class="docutils literal"><span class="pre">teardown</span></tt>). The fixture is executed for EACH test.</p>
  676. <p><pre class="listing"><span class="Identifier">suite</span> <span class="StringLit">&quot;test suite for addition&quot;</span><span class="Punctuation">:</span>
  677. <span class="Identifier">setup</span><span class="Punctuation">:</span>
  678. <span class="Keyword">let</span> <span class="Identifier">result</span> <span class="Operator">=</span> <span class="DecNumber">4</span>
  679. <span class="Identifier">test</span> <span class="StringLit">&quot;2 + 2 = 4&quot;</span><span class="Punctuation">:</span>
  680. <span class="Identifier">check</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Operator">+</span><span class="DecNumber">2</span> <span class="Operator">==</span> <span class="Identifier">result</span><span class="Punctuation">)</span>
  681. <span class="Identifier">test</span> <span class="StringLit">&quot;(2 + -2) != 4&quot;</span><span class="Punctuation">:</span>
  682. <span class="Identifier">check</span><span class="Punctuation">(</span><span class="DecNumber">2</span> <span class="Operator">+</span> <span class="Operator">-</span><span class="DecNumber">2</span> <span class="Operator">!=</span> <span class="Identifier">result</span><span class="Punctuation">)</span>
  683. <span class="Comment"># No teardown needed</span></pre></p>
  684. <p>The suite will run the individual test cases in the order in which they were listed. With default global settings the above code prints:</p>
  685. <pre>[Suite] test suite for addition
  686. [OK] 2 + 2 = 4
  687. [OK] (2 + -2) != 4</pre>
  688. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L468" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  689. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L468" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  690. </dd>
  691. </div>
  692. </div>
  693. <div id="test-templates-all">
  694. <div id="test.t,,">
  695. <dt><pre><span class="Keyword">template</span> <a href="#test.t%2C%2C"><span class="Identifier">test</span></a><span class="Other">(</span><span class="Identifier">name</span><span class="Other">,</span> <span class="Identifier">body</span><span class="Other">)</span> {.<span class="Identifier">dirty</span>.}</pre></dt>
  696. <dd>
  697. <p>Define a single test case identified by <tt class="docutils literal"><span class="pre"><span class="Identifier">name</span></span></tt>.</p>
  698. <p><pre class="listing"><span class="Identifier">test</span> <span class="StringLit">&quot;roses are red&quot;</span><span class="Punctuation">:</span>
  699. <span class="Keyword">let</span> <span class="Identifier">roses</span> <span class="Operator">=</span> <span class="StringLit">&quot;red&quot;</span>
  700. <span class="Identifier">check</span><span class="Punctuation">(</span><span class="Identifier">roses</span> <span class="Operator">==</span> <span class="StringLit">&quot;red&quot;</span><span class="Punctuation">)</span></pre></p>
  701. <p>The above code outputs:</p>
  702. <pre>[OK] roses are red</pre>
  703. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unittest.nim#L527" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  704. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unittest.nim#L527" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  705. </dd>
  706. </div>
  707. </div>
  708. </dl>
  709. </div>
  710. </div>
  711. </div>
  712. <div class="twelve-columns footer">
  713. <span class="nim-sprite"></span>
  714. <br>
  715. <small style="color: var(--hint);">Made with Nim. Generated: 2025-03-25 06:49:24 UTC</small>
  716. </div>
  717. </div>
  718. </div>
  719. <script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
  720. </body>
  721. </html>