add_test -------- Add a test to the project to be run by :manual:`ctest(1)`. .. code-block:: cmake add_test(NAME COMMAND [...] [CONFIGURATIONS ...] [WORKING_DIRECTORY ] [COMMAND_EXPAND_LISTS] [BUILD_DEPENDS ...]) Adds a test called ````. The test name may contain arbitrary characters, expressed as a :ref:`Quoted Argument` or :ref:`Bracket Argument` 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 :variable:`BUILD_TESTING` is set to ``OFF``. Tests added with the ``add_test(NAME)`` signature support using :manual:`generator expressions ` 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: ``COMMAND`` Specify the test command-line. If ```` specifies an executable target created by :command:`add_executable`: * It will automatically be replaced by the location of the executable created at build time. * .. versionadded:: 3.3 The target's :prop_tgt:`CROSSCOMPILING_EMULATOR`, if set, will be used to run the command on the host:: .. versionchanged:: 3.29 The emulator is used only when :variable:`cross-compiling `. See policy :policy:`CMP0158`. * .. versionadded:: 3.29 The target's :prop_tgt:`TEST_LAUNCHER`, if set, will be used to launch the command:: If the :prop_tgt:`CROSSCOMPILING_EMULATOR` is also set, both are used:: * .. versionadded:: 4.4 When the :variable:`CMAKE_TEST_BUILD_DEPENDS` variable is enabled, the :ref:`Ninja Generators` generate a convenience build target named ``test_prep/`` that depends on the test executable target. Building this target ensures the executable is up-to-date before the test runs. Additionally, targets referenced by the test command via generator expressions are added as dependencies of the ``test_prep/`` target. If multiple tests in different directories share the same name, their dependencies are merged into a single ``test_prep/`` target. Tests with names that are not valid target names are excluded from this behavior. The ``BUILD_DEPENDS`` keyword can be used to add explicit build dependencies. The command may be specified using :manual:`generator expressions `. ``CONFIGURATIONS`` Restrict execution of the test only to the named configurations. ``WORKING_DIRECTORY`` 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 `. ``BUILD_DEPENDS`` .. versionadded:: 4.4 Specify a list of targets or files that must be built before the test can run. Each dependency is added to the ``test_prep/`` build target described above when :variable:`CMAKE_TEST_BUILD_DEPENDS` is enabled with the :ref:`Ninja Generators`. The test name must be a valid target name in order to list build dependencies with this keyword. ``COMMAND_EXPAND_LISTS`` .. versionadded:: 3.16 Lists in ``COMMAND`` arguments will be expanded, including those created with :manual:`generator expressions `. 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_FAIL`` 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. .. versionadded:: 3.16 Added :prop_test:`SKIP_REGULAR_EXPRESSION` property. Example usage: .. code-block:: cmake add_test(NAME mytest COMMAND testDriver --config $ --exe $) 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``. --------------------------------------------------------------------- The command syntax above is recommended over the older, less flexible form: .. code-block:: cmake add_test( [...]) Add a test called ```` 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 ` in the command-line or test properties, and the :prop_tgt:`TEST_LAUNCHER` and :prop_tgt:`CROSSCOMPILING_EMULATOR` target properties are not supported.