CMake Testing Process
*********************

The following documents the process for running integration testing builds.
See documentation on `CMake Development`_ for more information.

.. _`CMake Development`: README.rst

CMake Dashboard Scripts
=======================

The *integration testing* step of the `CMake Review Process`_ uses a set of
testing machines that follow an integration branch on their own schedule to
drive testing and submit results to the `CMake CDash Page`_.  Anyone is
welcome to provide testing machines in order to help keep support for their
platforms working.

The `CMake Dashboard Scripts Repository`_ provides CTest scripts to drive
nightly, continuous, and experimental testing of CMake.  Use the following
commands to set up a new integration testing client:

.. code-block:: console

  $ mkdir -p ~/Dashboards
  $ cd ~/Dashboards
  $ git clone https://gitlab.kitware.com/cmake/dashboard-scripts.git CMakeScripts
  $ cd CMakeScripts

The ``cmake_common.cmake`` script contains comments at the top with
instructions to set up a testing client.  As it instructs, create a
CTest script with local settings and include ``cmake_common.cmake``.

.. _`CMake Review Process`: review.rst
.. _`CMake CDash Page`: https://open.cdash.org/index.php?project=CMake
.. _`CMake Dashboard Scripts Repository`: https://gitlab.kitware.com/cmake/dashboard-scripts

Nightly Start Time
------------------

The ``cmake_common.cmake`` script expects its includer to be run from a
nightly scheduled task (cron job).  Schedule such tasks for sometime after
``1:00am UTC``, the time at which our nightly testing branches fast-forward.
