# CTest

Configure a project for testing with CTest/CDash

Include this module in the top CMakeLists.txt file of a project to enable testing with CTest and dashboard submissions to CDash:

    project(MyProject)
    ...
    include(CTest)

The module automatically creates a `BUILD_TESTING` option that selects whether to enable testing support (`ON` by default). After including the module, use code like:

    if(BUILD_TESTING)
      # ... CMake code to create tests ...
    endif()

to creating tests when testing is enabled.

To enable submissions to a CDash server, create a `CTestConfig.cmake` file at the top of the project with content such as:

    set(CTEST_PROJECT_NAME "MyProject")
    set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
    set(CTEST_DROP_METHOD "http")
    set(CTEST_DROP_SITE "my.cdash.org")
    set(CTEST_DROP_LOCATION "/submit.php?project=MyProject")
    set(CTEST_DROP_SITE_CDASH TRUE)

(the CDash server can provide the file to a project administrator who configures `MyProject`). Settings in the config file are shared by both this `CTest` module and the `ctest(1)` command-line Dashboard Client mode (`ctest -S`).

While building a project for submission to CDash, CTest scans the build output for errors and warnings and reports them with surrounding context from the build log. This generic approach works for all build tools, but does not give details about the command invocation that produced a given problem. One may get more detailed reports by setting the `CTEST_USE_LAUNCHERS` variable:

    set(CTEST_USE_LAUNCHERS 1)

in the `CTestConfig.cmake` file.