cmake/Help/command/add_test.rst

90 lines
3.3 KiB
ReStructuredText
Raw Normal View History

2014-08-03 19:52:23 +02:00
add_test
--------
Add a test to the project to be run by :manual:`ctest(1)`.
2019-11-11 23:01:05 +01:00
.. code-block:: cmake
2014-08-03 19:52:23 +02:00
add_test(NAME <name> COMMAND <command> [<arg>...]
[CONFIGURATIONS <config>...]
2020-02-01 23:06:01 +01:00
[WORKING_DIRECTORY <dir>]
[COMMAND_EXPAND_LISTS])
2014-08-03 19:52:23 +02:00
2021-09-14 00:13:48 +02:00
Adds a test called ``<name>``. The test name may contain arbitrary
characters, expressed as a :ref:`Quoted Argument` or :ref:`Bracket Argument`
2023-07-02 19:51:09 +02:00
if necessary. See policy :policy:`CMP0110`.
CMake only generates tests if the :command:`enable_testing` command has been
invoked. The :module:`CTest` module invokes ``enable_testing`` automatically
unless ``BUILD_TESTING`` is set to ``OFF``.
Tests added with the ``add_test(NAME)`` signature support using
:manual:`generator expressions <cmake-generator-expressions(7)>`
in test properties set by :command:`set_property(TEST)` or
:command:`set_tests_properties`. Test properties may only be set in the
directory the test is created in.
``add_test`` options are:
2014-08-03 19:52:23 +02:00
``COMMAND``
2023-07-02 19:51:09 +02:00
Specify the test command-line. If ``<command>`` specifies an executable
target created by :command:`add_executable`, it will automatically be
replaced by the location of the executable created at build time.
2014-08-03 19:52:23 +02:00
2022-03-29 21:10:50 +02:00
The command may be specified using
:manual:`generator expressions <cmake-generator-expressions(7)>`.
2014-08-03 19:52:23 +02:00
``CONFIGURATIONS``
Restrict execution of the test only to the named configurations.
``WORKING_DIRECTORY``
2023-07-02 19:51:09 +02:00
Set the test property :prop_test:`WORKING_DIRECTORY` in which to execute the
test. If not specified, the test will be run in
:variable:`CMAKE_CURRENT_BINARY_DIR`. The working directory may be specified
using :manual:`generator expressions <cmake-generator-expressions(7)>`.
2022-03-29 21:10:50 +02:00
2020-02-01 23:06:01 +01:00
``COMMAND_EXPAND_LISTS``
2021-09-14 00:13:48 +02:00
.. versionadded:: 3.16
2023-07-02 19:51:09 +02:00
Lists in ``COMMAND`` arguments will be expanded, including those created with
2020-02-01 23:06:01 +01:00
:manual:`generator expressions <cmake-generator-expressions(7)>`.
2023-07-02 19:51:09 +02:00
If the test command exits with code ``0`` the test passes. Non-zero exit code
is a "failed" test. The test property :prop_test:`WILL_FAIL` inverts this
logic. Note that system-level test failures such as segmentation faults or
heap errors will still fail the test even if ``WILL_FALL`` is true. Output
written to stdout or stderr is captured by :manual:`ctest(1)` and only
affects the pass/fail status via the :prop_test:`PASS_REGULAR_EXPRESSION`,
:prop_test:`FAIL_REGULAR_EXPRESSION`, or :prop_test:`SKIP_REGULAR_EXPRESSION`
test properties.
2015-11-17 17:22:37 +01:00
2021-09-14 00:13:48 +02:00
.. versionadded:: 3.16
Added :prop_test:`SKIP_REGULAR_EXPRESSION` property.
2019-11-11 23:01:05 +01:00
Example usage:
.. code-block:: cmake
2014-08-03 19:52:23 +02:00
add_test(NAME mytest
2021-09-14 00:13:48 +02:00
COMMAND testDriver --config $<CONFIG>
2014-08-03 19:52:23 +02:00
--exe $<TARGET_FILE:myexe>)
This creates a test ``mytest`` whose command runs a ``testDriver`` tool
passing the configuration name and the full path to the executable
file produced by target ``myexe``.
---------------------------------------------------------------------
2023-07-02 19:51:09 +02:00
The command syntax above is recommended over the older, less flexible form:
2022-03-29 21:10:50 +02:00
2019-11-11 23:01:05 +01:00
.. code-block:: cmake
2014-08-03 19:52:23 +02:00
add_test(<name> <command> [<arg>...])
2022-03-29 21:10:50 +02:00
Add a test called ``<name>`` with the given command-line.
Unlike the above ``NAME`` signature, target names are not supported
in the command-line. Furthermore, tests added with this signature do not
support :manual:`generator expressions <cmake-generator-expressions(7)>`
in the command-line or test properties.