.. cmake-manual-description: CTest Command-Line Reference
ctest(1)
********
.. contents::
Synopsis
========
.. parsed-literal::
`Run Tests`_
ctest [<options>]
`Build and Test Mode`_
ctest --build-and-test <path-to-source> <path-to-build>
--build-generator <generator> [<options>...]
[--build-options <opts>...]
[--test-command <command> [<args>...]]
`Dashboard Client`_
ctest -D <dashboard> [-- <dashboard-options>...]
ctest -M <model> -T <action> [-- <dashboard-options>...]
ctest -S <script> [-- <dashboard-options>...]
ctest -SP <script> [-- <dashboard-options>...]
`View Help`_
ctest --help[-<topic>]
Description
===========
The :program:`ctest` executable is the CMake test driver program.
CMake-generated build trees created for projects that use the
:command:`enable_testing` and :command:`add_test` commands have testing support.
This program will run the tests and report results.
.. _`Run Tests`:
Run Tests
=========
.. program:: ctest
.. option:: --preset <preset>, --preset=<preset>
Use a test preset to specify test options. The project binary directory
is inferred from the ``configurePreset`` key. The current working directory
must contain CMake preset files.
See :manual:`preset <cmake-presets(7)>` for more details.
.. option:: --list-presets
Lists the available test presets. The current working directory must contain
CMake preset files.
.. option:: -C <cfg>, --build-config <cfg>
Choose configuration to test.
Some CMake-generated build trees can have multiple build
configurations in the same tree. This option can be used to specify
which one should be tested. Example configurations are ``Debug`` and
``Release``.
.. option:: --progress
Enable short progress output from tests.
When the output of :program:`ctest` is being sent directly to a terminal, the
progress through the set of tests is reported by updating the same line
rather than printing start and end messages for each test on new lines.
This can significantly reduce the verbosity of the test output.
Test completion messages are still output on their own line for failed
tests and the final test summary will also still be logged.
This option can also be enabled by setting the environment variable
:envvar:`CTEST_PROGRESS_OUTPUT`.
.. option:: -V, --verbose
Enable verbose output from tests.
Test output is normally suppressed and only summary information is
displayed. This option will show all test output.
.. option:: -VV, --extra-verbose
Enable more verbose output from tests.
Test output is normally suppressed and only summary information is
displayed. This option will show even more test output.
.. option:: --debug
Displaying more verbose internals of CTest.
This feature will result in a large number of output that is mostly
useful for debugging dashboard problems.
.. option:: --output-on-failure
Output anything outputted by the test program if the test should fail.
This option can also be enabled by setting the
:envvar:`CTEST_OUTPUT_ON_FAILURE` environment variable
.. option:: --stop-on-failure
Stop running the tests when the first failure happens.
.. option:: -F
Enable failover.
This option allows CTest to resume a test set execution that was
previously interrupted. If no interruption occurred, the ``-F`` option
will have no effect.
.. option:: -j <jobs>, --parallel <jobs>
Run the tests in parallel using the given number of jobs.
This option tells CTest to run the tests in parallel using given
number of jobs. This option can also be set by setting the
:envvar:`CTEST_PARALLEL_LEVEL` environment variable.
This option can be used with the :prop_test:`PROCESSORS` test property.
See `Label and Subproject Summary`_.
.. option:: --resource-spec-file <file>
Run CTest with :ref:`resource allocation <ctest-resource-allocation>` enabled,
using the
:ref:`resource specification file <ctest-resource-specification-file>`
specified in ``<file>``.
When :program:`ctest` is run as a `Dashboard Client`_ this sets the
``ResourceSpecFile`` option of the `CTest Test Step`_.
.. option:: --test-load <level>
While running tests in parallel (e.g. with :option:`-j <ctest -j>`), try
not to start tests when they may cause the CPU load to pass above a given
threshold.
When :program:`ctest` is run as a `Dashboard Client`_ this sets the
``TestLoad`` option of the `CTest Test Step`_.
.. option:: -Q, --quiet
Make CTest quiet.
This option will suppress all the output. The output log file will
still be generated if the :option:`--output-log <ctest --output-log>` is
specified. Options such as :option:`--verbose <ctest --verbose>`,
:option:`--extra-verbose <ctest --extra-verbose>`, and
:option:`--debug <ctest --debug>` are ignored
if ``--quiet`` is specified.
.. option:: -O <file>, --output-log <file>
Output to log file.
This option tells CTest to write all its output to a ``<file>`` log file.
.. option:: --output-junit <file>
.. versionadded:: 3.21
Write test results in JUnit format.
This option tells CTest to write test results to ``<file>`` in JUnit XML
format. If ``<file>`` already exists, it will be overwritten. If using the
:option:`-S <ctest -S>` option to run a dashboard script, use the
``OUTPUT_JUNIT`` keyword with the :command:`ctest_test` command instead.
.. option:: -N, --show-only[=<format>]
Disable actual execution of tests.
This option tells CTest to list the tests that would be run but not
actually run them. Useful in conjunction with the :option:`-R <ctest -R>`
and :option:`-E <ctest -E>` options.
.. versionadded:: 3.14
The ``--show-only`` option accepts a ``<format>`` value.
``<format>`` can be one of the following values.
``human``
Human-friendly output. This is not guaranteed to be stable.
This is the default.
``json-v1``
Dump the test information in JSON format.
See `Show as JSON Object Model`_.
.. option:: -L <regex>, --label-regex <regex>
Run tests with labels matching regular expression as described under
:ref:`string(REGEX) <Regex Specification>`.
This option tells CTest to run only the tests whose labels match the
given regular expression. When more than one ``-L`` option is given,
a test will only be run if each regular expression matches at least one
of the test's labels (i.e. the multiple ``-L`` labels form an ``AND``
relationship). See `Label Matching`_.
.. option:: -R <regex>, --tests-regex <regex>
Run tests matching regular expression.
This option tells CTest to run only the tests whose names match the
given regular expression.
.. option:: -E <regex>, --exclude-regex <regex>
Exclude tests matching regular expression.
This option tells CTest to NOT run the tests whose names match the
given regular expression.
.. option:: -LE <regex>, --label-exclude <regex>
Exclude tests with labels matching regular expression.
This option tells CTest to NOT run the tests whose labels match the
given regular expression. When more than one ``-LE`` option is given,
a test will only be excluded if each regular expression matches at least one
of the test's labels (i.e. the multiple ``-LE`` labels form an ``AND``
relationship). See `Label Matching`_.
.. option:: -FA <regex>, --fixture-exclude-any <regex>
Exclude fixtures matching ``<regex>`` from automatically adding any tests to
the test set.
If a test in the set of tests to be executed requires a particular fixture,
that fixture's setup and cleanup tests would normally be added to the test set
automatically. This option prevents adding setup or cleanup tests for fixtures
matching the ``<regex>``. Note that all other fixture behavior is retained,
including test dependencies and skipping tests that have fixture setup tests
that fail.
.. option:: -FS <regex>, --fixture-exclude-setup <regex>
Same as :option:`-FA <ctest -FA>` except only matching setup tests are
excluded.
.. option: