CMake Testing Guide
*******************

The following is a guide to the CMake test suite for developers.
See documentation on `CMake Development`_ for more information.

See `CMake Integration Testing`_ for running integration testing builds.

See `Tests/README.rst`_ for the test suite layout in the source tree.

.. _`CMake Development`: README.rst
.. _`CMake Integration Testing`: integration-testing.rst
.. _`Tests/README.rst`: ../../Tests/README.rst

Running Tests in the Build Tree
===============================

After `Building CMake`_, one may run the test suite in the build tree
using `ctest(1)`_:

* With a single-configuration CMake generator, such as ``Ninja``
  or ``Unix Makefiles``, one may simply run ``ctest``:

  .. code-block:: console

    $ ctest

* With a multi-configuration CMake generator, such as
  :generator:`Ninja Multi-Config`, :generator:`Visual Studio <Visual Studio
  Generators>`, or :generator:`Xcode`, one must tell ``ctest`` which
  configuration to test by passing the ``-C <config>`` option:

  .. code-block:: console

    $ ctest -C Debug

Some useful `ctest(1)`_ options include:

``-N``
  List test names without running them.

``-V``
  Show verbose output from each test.

``-j <N>``
  Run to run up to ``N`` tests concurrently.

``-R <regex>``
  Select tests for which the regular expression matches a substring
  of their name.

Cleaning Test Build Trees
-------------------------

Many CMake tests create their own test project build trees underneath
the ``Tests/`` directory at the top of the CMake build tree.  These
build trees are left behind after testing completes in order to
facilitate manual investigation of results.  Many of the tests do *not*
clean their build trees if they are run again, with the exception of
tests using the `RunCMake`_ infrastructure.

In order to clear test build trees, drive the ``test_clean`` custom target
in the CMake build tree:

.. code-block:: console

  $ cmake --build . --target test_clean

This removes the ``Tests/`` subdirectories created by individual tests
so they will use a fresh directory next time they run.

.. _`Building CMake`: ../../README.rst#building-cmake
.. _`ctest(1)`: https://cmake.org/cmake/help/latest/manual/ctest.1.html
.. _`RunCMake`: ../../Tests/RunCMake/README.rst

Running Tests with a Different Generator
========================================

After `Building CMake`_ with one CMake generator, one may configure the
test suite using a different generator in a separate build tree, without
building CMake itself again, by defining ``CMake_TEST_EXTERNAL_CMAKE``
to be the absolute path to the ``bin`` directory containing the ``cmake``,
``ctest``, and ``cpack`` executables.

For example, after building CMake with the ``Ninja`` generator:

.. code-block:: console

  $ cmake -B build-ninja -G Ninja -DCMAKE_BUILD_TYPE=Debug
  $ cmake --build build-ninja

one may configure a second build tree to drive tests with the
``Ninja Multi-Config`` generator:

.. code-block:: console

  $ cmake -B build-nmc-tests -G "Ninja Multi-Config" \
    -DCMake_TEST_EXTERNAL_CMAKE="$PWD/build-ninja/bin"
  $ cmake --build build-nmc-tests --config Release

The second build tree does not build CMake itself, but does configure
the test suite and build test binaries.  One may then run tests normally:

.. code-block:: console

  $ cd build-nmc-tests
  $ ctest -C Release

Note that the configuration with which one drives tests in the second
build tree is independent of the configuration with which CMake was
built in the first.
