test_unit_filtering.html 61 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Test unit filtering</title>
  5. <link rel="stylesheet" href="../../boostbook.css" type="text/css">
  6. <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
  7. <link rel="home" href="../../index.html" title="Boost.Test">
  8. <link rel="up" href="../runtime_config.html" title="Runtime parameters">
  9. <link rel="prev" href="../runtime_config.html" title="Runtime parameters">
  10. <link rel="next" href="custom_command_line_arguments.html" title="Custom command line arguments">
  11. </head>
  12. <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
  13. <table cellpadding="2" width="100%"><tr>
  14. <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
  15. <td align="center"><a href="../../../../../../index.html">Home</a></td>
  16. <td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
  17. <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
  18. <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
  19. <td align="center"><a href="../../../../../../more/index.htm">More</a></td>
  20. </tr></table>
  21. <hr>
  22. <div class="spirit-nav">
  23. <a accesskey="p" href="../runtime_config.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../runtime_config.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="custom_command_line_arguments.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  24. </div>
  25. <div class="section">
  26. <div class="titlepage"><div><div><h3 class="title">
  27. <a name="boost_test.runtime_config.test_unit_filtering"></a><a class="link" href="test_unit_filtering.html" title="Test unit filtering">Test unit
  28. filtering</a>
  29. </h3></div></div></div>
  30. <p>
  31. The <span class="emphasis"><em>Unit Test Framework</em></span> offers a number of ways to run
  32. only a subset of all test cases registered in the test tree.
  33. </p>
  34. <a name="ref_default_run_status"></a><h4>
  35. <a name="boost_test.runtime_config.test_unit_filtering.h0"></a>
  36. <span class="phrase"><a name="boost_test.runtime_config.test_unit_filtering.default_run_status"></a></span><a class="link" href="test_unit_filtering.html#boost_test.runtime_config.test_unit_filtering.default_run_status">Default
  37. run status</a>
  38. </h4>
  39. <p>
  40. Each test unit (either test case or test suite) has an associated <span class="emphasis"><em>default
  41. run status</em></span>. It can assume one of the three values:
  42. </p>
  43. <div class="orderedlist"><ol class="orderedlist" type="1">
  44. <li class="listitem">
  45. <span class="emphasis"><em>true</em></span> -- this means that, unless some runtime parameters
  46. specify otherwise, the test unit is designated to be run.
  47. </li>
  48. <li class="listitem">
  49. <span class="emphasis"><em>false</em></span> -- this means that, unless some runtime parameters
  50. specify otherwise, the test unit is designated <span class="emphasis"><em>not</em></span>
  51. to be run.
  52. </li>
  53. <li class="listitem">
  54. <span class="emphasis"><em>inherit</em></span> -- this means that the test unit's default
  55. run status is the same as that of its immediate parent test unit. This
  56. is applied recursively.
  57. </li>
  58. </ol></div>
  59. <p>
  60. Initially, the master test suite has default run status set to <span class="emphasis"><em>true</em></span>.
  61. All other test units have default run status set to <span class="emphasis"><em>inherit</em></span>.
  62. This implies that, unless any additional configuration is applied, all tests
  63. are designated to be run.
  64. </p>
  65. <p>
  66. You can set a different default run status in any test unit by using <a class="link" href="../tests_organization/decorators.html" title="Decorators">decorators</a>: <a class="link" href="../utf_reference/test_org_reference/decorator_enabled.html" title="enabled / disabled (decorator)"><code class="computeroutput"><span class="identifier">disabled</span></code></a>, <a class="link" href="../utf_reference/test_org_reference/decorator_enabled.html" title="enabled / disabled (decorator)"><code class="computeroutput"><span class="identifier">enabled</span></code></a> and <a class="link" href="../utf_reference/test_org_reference/decorator_enable_if.html" title="enable_if (decorator)"><code class="computeroutput"><span class="identifier">enable_if</span></code></a>. The default run status
  67. is set once, upon testing program initialization, and cannot be changed.
  68. The disabled tests are not executed by default, but are still present in
  69. the test tree, and are listed along with other tests when you use command-line
  70. argument <a class="link" href="../utf_reference/rt_param_reference/list_content.html" title="list_content"><code class="computeroutput"><span class="identifier">list_content</span></code></a>.
  71. </p>
  72. <h6>
  73. <a name="boost_test.runtime_config.test_unit_filtering.h1"></a>
  74. <span class="phrase"><a name="boost_test.runtime_config.test_unit_filtering.example_descr"></a></span><a class="link" href="test_unit_filtering.html#boost_test.runtime_config.test_unit_filtering.example_descr">Example:
  75. default run status</a>
  76. </h6>
  77. <div class="informaltable"><table class="table">
  78. <colgroup><col></colgroup>
  79. <thead><tr><th>
  80. <p>
  81. Code
  82. </p>
  83. </th></tr></thead>
  84. <tbody><tr><td>
  85. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">decorator_20</span>
  86. <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
  87. <span class="keyword">namespace</span> <span class="identifier">utf</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">;</span>
  88. <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">io_implemented</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
  89. <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">db_implemented</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
  90. <span class="identifier">BOOST_AUTO_TEST_SUITE</span><span class="special">(</span><span class="identifier">suite1</span><span class="special">,</span> <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">disabled</span><span class="special">())</span>
  91. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_1</span><span class="special">)</span>
  92. <span class="special">{</span>
  93. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="number">1</span> <span class="special">!=</span> <span class="number">1</span><span class="special">);</span>
  94. <span class="special">}</span>
  95. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_2</span><span class="special">,</span> <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">enabled</span><span class="special">())</span>
  96. <span class="special">{</span>
  97. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="number">2</span> <span class="special">!=</span> <span class="number">2</span><span class="special">);</span>
  98. <span class="special">}</span>
  99. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_io</span><span class="special">,</span>
  100. <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special">&lt;</span><span class="identifier">io_implemented</span><span class="special">&gt;())</span>
  101. <span class="special">{</span>
  102. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="number">3</span> <span class="special">!=</span> <span class="number">3</span><span class="special">);</span>
  103. <span class="special">}</span>
  104. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_db</span><span class="special">,</span>
  105. <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special">&lt;</span><span class="identifier">db_implemented</span><span class="special">&gt;())</span>
  106. <span class="special">{</span>
  107. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="number">4</span> <span class="special">!=</span> <span class="number">4</span><span class="special">);</span>
  108. <span class="special">}</span>
  109. <span class="identifier">BOOST_AUTO_TEST_SUITE_END</span><span class="special">()</span>
  110. </pre>
  111. </td></tr></tbody>
  112. </table></div>
  113. <div class="informaltable"><table class="table">
  114. <colgroup><col></colgroup>
  115. <thead><tr><th>
  116. <p>
  117. Output
  118. </p>
  119. </th></tr></thead>
  120. <tbody><tr><td>
  121. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">decorator_20</span>
  122. <span class="identifier">Running</span> <span class="number">2</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
  123. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">18</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"suite1/test_2"</span><span class="special">:</span> <span class="identifier">check</span> <span class="number">2</span> <span class="special">!=</span> <span class="number">2</span> <span class="identifier">has</span> <span class="identifier">failed</span> <span class="special">[</span><span class="number">2</span> <span class="special">==</span> <span class="number">2</span><span class="special">]</span>
  124. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">24</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"suite1/test_io"</span><span class="special">:</span> <span class="identifier">check</span> <span class="number">3</span> <span class="special">!=</span> <span class="number">3</span> <span class="identifier">has</span> <span class="identifier">failed</span> <span class="special">[</span><span class="number">3</span> <span class="special">==</span> <span class="number">3</span><span class="special">]</span>
  125. <span class="special">***</span> <span class="number">2</span> <span class="identifier">failures</span> <span class="identifier">are</span> <span class="identifier">detected</span> <span class="identifier">in</span> <span class="identifier">the</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_20"</span>
  126. <span class="special">&gt;</span> <span class="identifier">decorator_20</span> <span class="special">--</span><span class="identifier">list_content</span>
  127. <span class="identifier">suite1</span><span class="special">*</span>
  128. <span class="identifier">test_1</span>
  129. <span class="identifier">test_2</span><span class="special">*</span>
  130. <span class="identifier">test_io</span><span class="special">*</span>
  131. <span class="identifier">test_db</span>
  132. </pre>
  133. </td></tr></tbody>
  134. </table></div>
  135. <a name="ref_dynamic_test_dependency"></a><h4>
  136. <a name="boost_test.runtime_config.test_unit_filtering.h2"></a>
  137. <span class="phrase"><a name="boost_test.runtime_config.test_unit_filtering.dynamic_test_dependencies"></a></span><a class="link" href="test_unit_filtering.html#boost_test.runtime_config.test_unit_filtering.dynamic_test_dependencies">Dynamic
  138. test dependencies</a>
  139. </h4>
  140. <p>
  141. Additionally, it is possible to statically associate a test unit with a condition.
  142. This associated condition is evaluated immediately before executing the test
  143. unit. If the condition is met, the test unit is executed. Otherwise, the
  144. test unit is <span class="emphasis"><em>skipped</em></span>. It is possible to add two dependencies:
  145. </p>
  146. <div class="orderedlist"><ol class="orderedlist" type="1">
  147. <li class="listitem">
  148. Upon another test unit. In this case the decorated test case is skipped
  149. if the test unit specified in the dependency is either failed or skipped
  150. or disabled. This can be declared with decorator <a class="link" href="../utf_reference/test_org_reference/decorator_depends_on.html" title="depends_on (decorator)"><code class="computeroutput"><span class="identifier">depends_on</span></code></a>.
  151. </li>
  152. <li class="listitem">
  153. Upon an arbitrary predicate. This can be declared with decorator <a class="link" href="../utf_reference/test_org_reference/decorator_precondition.html" title="precondition (decorator)"><code class="computeroutput"><span class="identifier">precondition</span></code></a>.
  154. </li>
  155. </ol></div>
  156. <a name="ref_command_line_control"></a><h4>
  157. <a name="boost_test.runtime_config.test_unit_filtering.h3"></a>
  158. <span class="phrase"><a name="boost_test.runtime_config.test_unit_filtering.command_line_control"></a></span><a class="link" href="test_unit_filtering.html#boost_test.runtime_config.test_unit_filtering.command_line_control">Command-line
  159. control</a>
  160. </h4>
  161. <p>
  162. Static configuration of the test-case filtering is used by default, unless
  163. command-line filtering is applied. With command-line argument <a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a> it is possible to alter
  164. the static pre-set in a number of ways:
  165. </p>
  166. <div class="orderedlist"><ol class="orderedlist" type="1">
  167. <li class="listitem">
  168. Ignore the static configuration and manually specify test cases to be
  169. run.
  170. </li>
  171. <li class="listitem">
  172. Augment the statically defined set by enabling the disabled test cases.
  173. </li>
  174. <li class="listitem">
  175. Shrink the statically defined set by disabling some of the enabled test
  176. cases.
  177. </li>
  178. </ol></div>
  179. <a name="ref_command_line_control_absolute"></a><h5>
  180. <a name="boost_test.runtime_config.test_unit_filtering.h4"></a>
  181. <span class="phrase"><a name="boost_test.runtime_config.test_unit_filtering.absolute_specification"></a></span><a class="link" href="test_unit_filtering.html#boost_test.runtime_config.test_unit_filtering.absolute_specification">Absolute
  182. specification</a>
  183. </h5>
  184. <p>
  185. Term 'absolute' in this context means that the default run status of the
  186. test units, which has been statically set up, is completely ignored and the
  187. tests to be run are specified manually from scratch. First, in order to learn
  188. what test units are registered in the test tree the user needs to use command-line
  189. argument <a class="link" href="../utf_reference/rt_param_reference/list_content.html" title="list_content"><code class="computeroutput"><span class="identifier">list_content</span></code></a>. Next, in order to
  190. specify a set of test cases, the user needs to use command-line argument
  191. <a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a> with absolute value:
  192. </p>
  193. <pre class="programlisting"><span class="special">&gt;</span> <span class="identifier">test_program</span> <span class="special">--</span><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a><span class="special">=&lt;</span><span class="identifier">test_set</span><span class="special">&gt;</span>
  194. </pre>
  195. <p>
  196. The format of <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">test_set</span><span class="special">&gt;</span></code> value can assume a number of forms. Given
  197. the following program:
  198. </p>
  199. <pre class="programlisting"><span class="preprocessor">#define</span> <a class="link" href="../utf_reference/link_references/link_boost_test_module_macro.html" title="BOOST_TEST_MODULE"><code class="computeroutput"><span class="identifier">BOOST_TEST_MODULE</span></code></a> <span class="identifier">example</span>
  200. <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
  201. <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">::</span><a class="link" href="../utf_reference/test_org_reference/decorator_label.html" title="label (decorator)"><code class="computeroutput"><span class="identifier">label</span></code></a><span class="special">;</span>
  202. <a class="link" href="../utf_reference/test_org_reference/test_org_boost_auto_test_case.html" title="BOOST_AUTO_TEST_CASE"><code class="computeroutput"><span class="identifier">BOOST_AUTO_TEST_CASE</span></code></a><span class="special">(</span><span class="identifier">test_1</span><span class="special">,</span> <span class="special">*</span><span class="identifier">label</span><span class="special">(</span><span class="string">"L1"</span><span class="special">))</span> <span class="special">{}</span>
  203. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_2</span><span class="special">,</span> <span class="special">*</span><span class="identifier">label</span><span class="special">(</span><span class="string">"L1"</span><span class="special">))</span> <span class="special">{}</span>
  204. <a class="link" href="../utf_reference/test_org_reference/test_org_boost_auto_test_suite.html" title="BOOST_AUTO_TEST_SUITE"><code class="computeroutput"><span class="identifier">BOOST_AUTO_TEST_SUITE</span></code></a><span class="special">(</span><span class="identifier">suite_1</span><span class="special">)</span>
  205. <span class="identifier">BOOST_AUTO_TEST_SUITE</span><span class="special">(</span><span class="identifier">suite_1</span><span class="special">)</span>
  206. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_1</span><span class="special">)</span> <span class="special">{}</span>
  207. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_2</span><span class="special">)</span> <span class="special">{}</span>
  208. <span class="identifier">BOOST_AUTO_TEST_SUITE_END</span><span class="special">()</span>
  209. <span class="identifier">BOOST_AUTO_TEST_SUITE</span><span class="special">(</span><span class="identifier">suite_2</span><span class="special">)</span>
  210. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_1</span><span class="special">,</span> <span class="special">*</span><span class="identifier">label</span><span class="special">(</span><span class="string">"L2"</span><span class="special">))</span> <span class="special">{}</span>
  211. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_2</span><span class="special">,</span> <span class="special">*</span><span class="identifier">label</span><span class="special">(</span><span class="string">"L2"</span><span class="special">))</span> <span class="special">{}</span>
  212. <span class="identifier">BOOST_AUTO_TEST_SUITE_END</span><span class="special">()</span>
  213. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_1</span><span class="special">,</span> <span class="special">*</span><span class="identifier">label</span><span class="special">(</span><span class="string">"L1"</span><span class="special">))</span> <span class="special">{}</span>
  214. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_2</span><span class="special">)</span> <span class="special">{}</span>
  215. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_2A</span><span class="special">)</span> <span class="special">{}</span>
  216. <span class="identifier">BOOST_AUTO_TEST_SUITE_END</span><span class="special">()</span>
  217. </pre>
  218. <p>
  219. The following table illustrates how different values of <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">test_set</span><span class="special">&gt;</span></code>
  220. control which test cases ware run.
  221. </p>
  222. <div class="informaltable"><table class="table">
  223. <colgroup>
  224. <col>
  225. <col>
  226. <col>
  227. </colgroup>
  228. <thead><tr>
  229. <th>
  230. <p>
  231. Description
  232. </p>
  233. </th>
  234. <th>
  235. <p>
  236. Parameter value
  237. </p>
  238. </th>
  239. <th>
  240. <p>
  241. Test cases run
  242. </p>
  243. </th>
  244. </tr></thead>
  245. <tbody>
  246. <tr>
  247. <td>
  248. <p>
  249. Run single top-level test case by name
  250. </p>
  251. </td>
  252. <td>
  253. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=test_1</pre>
  254. </td>
  255. <td>
  256. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">test_1
  257. </pre>
  258. </td>
  259. </tr>
  260. <tr>
  261. <td>
  262. <p>
  263. Run single nested test case by name
  264. </p>
  265. </td>
  266. <td>
  267. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=suite_1/suite_1/test_1</pre>
  268. </td>
  269. <td>
  270. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">suite_1/suite_1/test_1
  271. </pre>
  272. </td>
  273. </tr>
  274. <tr>
  275. <td>
  276. <p>
  277. Run single test suite by name
  278. </p>
  279. </td>
  280. <td>
  281. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=suite_1/suite_2
  282. <a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=suite_1/suite_2/*
  283. </pre>
  284. </td>
  285. <td>
  286. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">suite_1/suite_2/test_1
  287. suite_1/suite_2/test_2
  288. </pre>
  289. </td>
  290. </tr>
  291. <tr>
  292. <td>
  293. <p>
  294. Run multiple test units that are <span class="bold"><strong>siblings</strong></span>
  295. of the same test suite
  296. </p>
  297. </td>
  298. <td>
  299. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=suite_1/test_1,suite_2</pre>
  300. </td>
  301. <td>
  302. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">suite_1/suite_2/test_1
  303. suite_1/suite_2/test_2
  304. suite_1/test_1
  305. </pre>
  306. </td>
  307. </tr>
  308. <tr>
  309. <td>
  310. <p>
  311. Run multiple test units that are not necessarily siblings
  312. </p>
  313. </td>
  314. <td>
  315. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=suite_1/test_1:test_1</pre>
  316. </td>
  317. <td>
  318. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">suite_1/test_1
  319. test_1
  320. </pre>
  321. </td>
  322. </tr>
  323. <tr>
  324. <td>
  325. <p>
  326. Run all tests matching to a given label
  327. </p>
  328. </td>
  329. <td>
  330. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=@L1</pre>
  331. </td>
  332. <td>
  333. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">test_1
  334. test_2
  335. suite_1/test_1
  336. </pre>
  337. </td>
  338. </tr>
  339. <tr>
  340. <td>
  341. <p>
  342. Run every test case in the test tree. Note that this will also
  343. enable all disabled tests.
  344. </p>
  345. </td>
  346. <td>
  347. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=*</pre>
  348. </td>
  349. <td>
  350. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">test_1
  351. test_2
  352. suite_1/suite_1/test_1
  353. suite_1/suite_1/test_2
  354. suite_1/suite_2/test_1
  355. suite_1/suite_2/test_2
  356. suite_1/test_1
  357. suite_1/test_2
  358. suite_1/test_2A
  359. </pre>
  360. </td>
  361. </tr>
  362. <tr>
  363. <td>
  364. <p>
  365. Run every test unit in a given suite with a given prefix
  366. </p>
  367. </td>
  368. <td>
  369. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=suite_1/test*</pre>
  370. </td>
  371. <td>
  372. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">suite_1/test_1
  373. suite_1/test_2
  374. suite_1/test_2A
  375. </pre>
  376. </td>
  377. </tr>
  378. <tr>
  379. <td>
  380. <p>
  381. Run every test unit in a given suite with a given suffix
  382. </p>
  383. </td>
  384. <td>
  385. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=suite_1/*_1</pre>
  386. </td>
  387. <td>
  388. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">suite_1/suite_1/test_1
  389. suite_1/suite_1/test_2
  390. suite_1/test_1
  391. </pre>
  392. </td>
  393. </tr>
  394. <tr>
  395. <td>
  396. <p>
  397. Run every test unit in a given suite with a given infix
  398. </p>
  399. </td>
  400. <td>
  401. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=suite_1/*_2*</pre>
  402. </td>
  403. <td>
  404. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">suite_1/suite_2/test_1
  405. suite_1/suite_2/test_2
  406. suite_1/test_2
  407. suite_1/test_2A
  408. </pre>
  409. </td>
  410. </tr>
  411. <tr>
  412. <td>
  413. <p>
  414. Run test(s) with given name in any N-level suite
  415. </p>
  416. </td>
  417. <td>
  418. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=*/*/test_2</pre>
  419. </td>
  420. <td>
  421. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">suite_1/suite_1/test_2
  422. suite_1/suite_2/test_2
  423. </pre>
  424. </td>
  425. </tr>
  426. </tbody>
  427. </table></div>
  428. <p>
  429. For the syntax productions describing the structure of <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">test_set</span><span class="special">&gt;</span></code>
  430. value see <a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test">here</a>.
  431. </p>
  432. <p>
  433. While using manual absolute test case specification ignores the default run
  434. status, it does not ignore the dynamic test dependencies. If test unit <code class="computeroutput"><span class="identifier">B</span></code> depends on test unit <code class="computeroutput"><span class="identifier">A</span></code>
  435. and test <code class="computeroutput"><span class="identifier">B</span></code> is specified to
  436. be run by <a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>, <code class="computeroutput"><span class="identifier">A</span></code>
  437. is also run, even if it is not specified, and its failure may cause the execution
  438. of <code class="computeroutput"><span class="identifier">B</span></code> to be skipped. Similarly,
  439. the failed check of the <a class="link" href="../utf_reference/test_org_reference/decorator_precondition.html" title="precondition (decorator)"><code class="computeroutput"><span class="identifier">precondition</span></code></a> may cause the test
  440. selected test to be skipped.
  441. </p>
  442. <h6>
  443. <a name="boost_test.runtime_config.test_unit_filtering.h5"></a>
  444. <span class="phrase"><a name="boost_test.runtime_config.test_unit_filtering.example_descr0"></a></span><a class="link" href="test_unit_filtering.html#boost_test.runtime_config.test_unit_filtering.example_descr0">Example:
  445. run_test and dynamic dependencies</a>
  446. </h6>
  447. <div class="informaltable"><table class="table">
  448. <colgroup><col></colgroup>
  449. <thead><tr><th>
  450. <p>
  451. Code
  452. </p>
  453. </th></tr></thead>
  454. <tbody><tr><td>
  455. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">decorator_21</span>
  456. <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
  457. <span class="keyword">namespace</span> <span class="identifier">utf</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">;</span>
  458. <span class="keyword">namespace</span> <span class="identifier">tt</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">test_tools</span><span class="special">;</span>
  459. <span class="identifier">tt</span><span class="special">::</span><span class="identifier">assertion_result</span> <span class="identifier">fail</span><span class="special">(</span><span class="identifier">utf</span><span class="special">::</span><span class="identifier">test_unit_id</span><span class="special">)</span>
  460. <span class="special">{</span>
  461. <span class="identifier">tt</span><span class="special">::</span><span class="identifier">assertion_result</span> <span class="identifier">ans</span><span class="special">(</span><span class="keyword">false</span><span class="special">);</span>
  462. <span class="identifier">ans</span><span class="special">.</span><span class="identifier">message</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="string">"precondition failed"</span><span class="special">;</span>
  463. <span class="keyword">return</span> <span class="identifier">ans</span><span class="special">;</span>
  464. <span class="special">}</span>
  465. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_1</span><span class="special">)</span>
  466. <span class="special">{</span>
  467. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">false</span><span class="special">);</span>
  468. <span class="special">}</span>
  469. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_2</span><span class="special">,</span>
  470. <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">depends_on</span><span class="special">(</span><span class="string">"test_1"</span><span class="special">))</span>
  471. <span class="special">{</span>
  472. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
  473. <span class="special">}</span>
  474. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_3</span><span class="special">,</span>
  475. <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">precondition</span><span class="special">(</span><span class="identifier">fail</span><span class="special">))</span>
  476. <span class="special">{</span>
  477. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
  478. <span class="special">}</span>
  479. </pre>
  480. </td></tr></tbody>
  481. </table></div>
  482. <div class="informaltable"><table class="table">
  483. <colgroup><col></colgroup>
  484. <thead><tr><th>
  485. <p>
  486. Output
  487. </p>
  488. </th></tr></thead>
  489. <tbody><tr><td>
  490. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">decorator_21</span> <span class="special">--</span><span class="identifier">log_level</span><span class="special">=</span><span class="identifier">test_suite</span> <span class="special">--</span><span class="identifier">run_test</span><span class="special">=</span><span class="identifier">test_2</span><span class="special">,</span><span class="identifier">test_3</span>
  491. <span class="identifier">Including</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="identifier">test_1</span> <span class="identifier">as</span> <span class="identifier">a</span> <span class="identifier">dependency</span> <span class="identifier">of</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="identifier">test_2</span>
  492. <span class="identifier">Running</span> <span class="number">3</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
  493. <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_21"</span>
  494. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">14</span><span class="special">):</span> <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span>
  495. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">16</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"test_1"</span><span class="special">:</span> <span class="identifier">check</span> <span class="keyword">false</span> <span class="identifier">has</span> <span class="identifier">failed</span>
  496. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">14</span><span class="special">):</span> <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span><span class="special">;</span> <span class="identifier">testing</span> <span class="identifier">time</span><span class="special">:</span> <span class="number">3</span><span class="identifier">ms</span>
  497. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">26</span><span class="special">):</span> <span class="identifier">Test</span> <span class="keyword">case</span> <span class="string">"test_3"</span> <span class="identifier">is</span> <span class="identifier">skipped</span> <span class="identifier">because</span> <span class="identifier">precondition</span> <span class="identifier">failed</span>
  498. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">20</span><span class="special">):</span> <span class="identifier">Test</span> <span class="keyword">case</span> <span class="string">"test_2"</span> <span class="identifier">is</span> <span class="identifier">skipped</span> <span class="identifier">because</span> <span class="identifier">dependency</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span> <span class="identifier">has</span> <span class="identifier">failed</span>
  499. <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_21"</span><span class="special">;</span> <span class="identifier">testing</span> <span class="identifier">time</span><span class="special">:</span> <span class="number">17</span><span class="identifier">ms</span>
  500. <span class="special">***</span> <span class="number">1</span> <span class="identifier">failure</span> <span class="identifier">is</span> <span class="identifier">detected</span> <span class="identifier">in</span> <span class="identifier">the</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_21"</span>
  501. </pre>
  502. </td></tr></tbody>
  503. </table></div>
  504. <a name="ref_command_line_control_enablers"></a><h5>
  505. <a name="boost_test.runtime_config.test_unit_filtering.h6"></a>
  506. <span class="phrase"><a name="boost_test.runtime_config.test_unit_filtering.relative_specification"></a></span><a class="link" href="test_unit_filtering.html#boost_test.runtime_config.test_unit_filtering.relative_specification">Relative
  507. specification</a>
  508. </h5>
  509. <p>
  510. Term 'relative' in this context means that the configuration is based on
  511. either the default run status of the test units or by the command-line override
  512. specified by the <span class="emphasis"><em>absolute specification</em></span>; and atop of
  513. this, we additionally either enable some disabled test units or disable some
  514. enabled tests units. The relative specification is controlled by command-line
  515. argument <a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>, with the value using similar
  516. syntax as in the absolute specification, but preceded with either character
  517. <code class="computeroutput"><span class="char">'!'</span></code> for disabling enabled test
  518. units or with character <code class="computeroutput"><span class="char">'+'</span></code> for
  519. enabling the disabled test units. This can be summarized with the following
  520. table:
  521. </p>
  522. <div class="informaltable"><table class="table">
  523. <colgroup>
  524. <col>
  525. <col>
  526. <col>
  527. </colgroup>
  528. <thead><tr>
  529. <th>
  530. <p>
  531. command
  532. </p>
  533. </th>
  534. <th>
  535. <p>
  536. specification type
  537. </p>
  538. </th>
  539. <th>
  540. <p>
  541. semantics
  542. </p>
  543. </th>
  544. </tr></thead>
  545. <tbody>
  546. <tr>
  547. <td>
  548. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">&gt; test_program --<a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=!&lt;absolute_spec&gt;</pre>
  549. </td>
  550. <td>
  551. <p>
  552. disabler
  553. </p>
  554. </td>
  555. <td>
  556. <p>
  557. Enabled test units that match <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">absolute_spec</span><span class="special">&gt;</span></code>
  558. become disabled.
  559. </p>
  560. </td>
  561. </tr>
  562. <tr>
  563. <td>
  564. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting">&gt; test_program --<a class="link" href="../utf_reference/rt_param_reference/run_test.html" title="run_test"><code class="computeroutput"><span class="identifier">run_test</span></code></a>=+&lt;absolute_spec&gt;</pre>
  565. </td>
  566. <td>
  567. <p>
  568. enabler
  569. </p>
  570. </td>
  571. <td>
  572. <p>
  573. Disabled test units that match <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">absolute_spec</span><span class="special">&gt;</span></code>
  574. as well as their upstream dependencies become enabled.
  575. </p>
  576. </td>
  577. </tr>
  578. </tbody>
  579. </table></div>
  580. <p>
  581. The <span class="emphasis"><em>enabler</em></span> specification is used to enable a set of
  582. test units which are initially disabled.
  583. </p>
  584. <h6>
  585. <a name="boost_test.runtime_config.test_unit_filtering.h7"></a>
  586. <span class="phrase"><a name="boost_test.runtime_config.test_unit_filtering.example_descr1"></a></span><a class="link" href="test_unit_filtering.html#boost_test.runtime_config.test_unit_filtering.example_descr1">Example:
  587. command-line enabler</a>
  588. </h6>
  589. <div class="informaltable"><table class="table">
  590. <colgroup><col></colgroup>
  591. <thead><tr><th>
  592. <p>
  593. Code
  594. </p>
  595. </th></tr></thead>
  596. <tbody><tr><td>
  597. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">decorator_22</span>
  598. <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
  599. <span class="keyword">namespace</span> <span class="identifier">utf</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">;</span>
  600. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_1</span><span class="special">)</span>
  601. <span class="special">{</span>
  602. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
  603. <span class="special">}</span>
  604. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_net</span><span class="special">,</span>
  605. <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">disabled</span><span class="special">()</span>
  606. <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">description</span><span class="special">(</span><span class="string">"requires network"</span><span class="special">))</span>
  607. <span class="special">{</span>
  608. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
  609. <span class="special">}</span>
  610. </pre>
  611. </td></tr></tbody>
  612. </table></div>
  613. <div class="informaltable"><table class="table">
  614. <colgroup><col></colgroup>
  615. <thead><tr><th>
  616. <p>
  617. Output
  618. </p>
  619. </th></tr></thead>
  620. <tbody><tr><td>
  621. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">decorator_22</span> <span class="special">--</span><span class="identifier">list_content</span>
  622. <span class="identifier">test_1</span><span class="special">*</span>
  623. <span class="identifier">test_net</span> <span class="special">:</span> <span class="identifier">requires</span> <span class="identifier">network</span>
  624. <span class="special">&gt;</span> <span class="identifier">decorator_22</span> <span class="special">--</span><span class="identifier">log_level</span><span class="special">=</span><span class="identifier">test_suite</span>
  625. <span class="identifier">Running</span> <span class="number">1</span> <span class="identifier">test</span> <span class="keyword">case</span><span class="special">...</span>
  626. <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_22"</span>
  627. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">6</span><span class="special">):</span> <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span>
  628. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">6</span><span class="special">):</span> <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span>
  629. <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_22"</span><span class="special">;</span> <span class="identifier">testing</span> <span class="identifier">time</span><span class="special">:</span> <span class="number">5</span><span class="identifier">ms</span>
  630. <span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
  631. <span class="special">&gt;</span> <span class="identifier">decorator_22</span> <span class="special">--</span><span class="identifier">log_level</span><span class="special">=</span><span class="identifier">test_suite</span> <span class="special">--</span><span class="identifier">run_test</span><span class="special">=+</span><span class="identifier">test_net</span>
  632. <span class="identifier">Running</span> <span class="number">2</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
  633. <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_22"</span>
  634. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">6</span><span class="special">):</span> <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span>
  635. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">6</span><span class="special">):</span> <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span><span class="special">;</span> <span class="identifier">testing</span> <span class="identifier">time</span><span class="special">:</span> <span class="number">1</span><span class="identifier">ms</span>
  636. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">13</span><span class="special">):</span> <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_net"</span>
  637. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">13</span><span class="special">):</span> <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_net"</span><span class="special">;</span> <span class="identifier">testing</span> <span class="identifier">time</span><span class="special">:</span> <span class="number">1</span><span class="identifier">ms</span>
  638. <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_22"</span><span class="special">;</span> <span class="identifier">testing</span> <span class="identifier">time</span><span class="special">:</span> <span class="number">16</span><span class="identifier">ms</span>
  639. <span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
  640. </pre>
  641. </td></tr></tbody>
  642. </table></div>
  643. <p>
  644. Conversely, the <span class="emphasis"><em>disabler</em></span> specification is used to disable
  645. a set of test units which are initially enabled.
  646. </p>
  647. <h6>
  648. <a name="boost_test.runtime_config.test_unit_filtering.h8"></a>
  649. <span class="phrase"><a name="boost_test.runtime_config.test_unit_filtering.example_descr2"></a></span><a class="link" href="test_unit_filtering.html#boost_test.runtime_config.test_unit_filtering.example_descr2">Example:
  650. command-line disabler</a>
  651. </h6>
  652. <div class="informaltable"><table class="table">
  653. <colgroup><col></colgroup>
  654. <thead><tr><th>
  655. <p>
  656. Code
  657. </p>
  658. </th></tr></thead>
  659. <tbody><tr><td>
  660. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">decorator_23</span>
  661. <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
  662. <span class="keyword">namespace</span> <span class="identifier">utf</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">;</span>
  663. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_1</span><span class="special">)</span>
  664. <span class="special">{</span>
  665. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
  666. <span class="special">}</span>
  667. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_net</span><span class="special">,</span>
  668. <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">description</span><span class="special">(</span><span class="string">"requires network"</span><span class="special">))</span>
  669. <span class="special">{</span>
  670. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
  671. <span class="special">}</span>
  672. </pre>
  673. </td></tr></tbody>
  674. </table></div>
  675. <div class="informaltable"><table class="table">
  676. <colgroup><col></colgroup>
  677. <thead><tr><th>
  678. <p>
  679. Output
  680. </p>
  681. </th></tr></thead>
  682. <tbody><tr><td>
  683. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">decorator_23</span> <span class="special">--</span><span class="identifier">list_content</span>
  684. <span class="identifier">test_1</span><span class="special">*</span>
  685. <span class="identifier">test_net</span><span class="special">*:</span> <span class="identifier">requires</span> <span class="identifier">network</span>
  686. <span class="special">&gt;</span> <span class="identifier">decorator_23</span> <span class="special">--</span><span class="identifier">log_level</span><span class="special">=</span><span class="identifier">test_suite</span>
  687. <span class="identifier">Running</span> <span class="number">2</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
  688. <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_23"</span>
  689. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">6</span><span class="special">):</span> <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span>
  690. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">6</span><span class="special">):</span> <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span>
  691. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">12</span><span class="special">):</span> <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_net"</span>
  692. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">12</span><span class="special">):</span> <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_net"</span>
  693. <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_23"</span><span class="special">;</span> <span class="identifier">testing</span> <span class="identifier">time</span><span class="special">:</span> <span class="number">14</span><span class="identifier">ms</span>
  694. <span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
  695. <span class="special">&gt;</span> <span class="identifier">decorator_23</span> <span class="special">--</span><span class="identifier">log_level</span><span class="special">=</span><span class="identifier">test_suite</span> <span class="special">--</span><span class="identifier">run_test</span><span class="special">=!</span><span class="identifier">test_net</span>
  696. <span class="identifier">Running</span> <span class="number">1</span> <span class="identifier">test</span> <span class="keyword">case</span><span class="special">...</span>
  697. <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_23"</span>
  698. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">6</span><span class="special">):</span> <span class="identifier">Entering</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span>
  699. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">6</span><span class="special">):</span> <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="keyword">case</span> <span class="string">"test_1"</span>
  700. <span class="identifier">Leaving</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_23"</span><span class="special">;</span> <span class="identifier">testing</span> <span class="identifier">time</span><span class="special">:</span> <span class="number">5</span><span class="identifier">ms</span>
  701. </pre>
  702. </td></tr></tbody>
  703. </table></div>
  704. <p>
  705. If there are both an enabler and disabler on one command line that specify
  706. the same test, the test becomes disabled. I.e., the disabler takes the precedence
  707. over the enabler.
  708. </p>
  709. <div class="note"><table border="0" summary="Note">
  710. <tr>
  711. <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
  712. <th align="left">Note</th>
  713. </tr>
  714. <tr><td align="left" valign="top"><p>
  715. While enabler additionally enables the upstream dependencies (introduced
  716. with decorator <a class="link" href="../utf_reference/test_org_reference/decorator_depends_on.html" title="depends_on (decorator)"><code class="computeroutput"><span class="identifier">depends_on</span></code></a>), disabler does not
  717. disable them. Therefore when you enable and then disable the same test,
  718. you do not disable its upstream dependencies.
  719. </p></td></tr>
  720. </table></div>
  721. </div>
  722. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  723. <td align="left"></td>
  724. <td align="right"><div class="copyright-footer">Copyright &#169; 2001-2019 Boost.Test
  725. contributors<p>
  726. Distributed under the Boost Software License, Version 1.0. (See accompanying
  727. file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
  728. </p>
  729. </div></td>
  730. </tr></table>
  731. <hr>
  732. <div class="spirit-nav">
  733. <a accesskey="p" href="../runtime_config.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../runtime_config.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="custom_command_line_arguments.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  734. </div>
  735. </body>
  736. </html>