CTEST_COVERAGE_COMMAND
----------------------

Specify the CTest ``CoverageCommand`` setting
in a :manual:`ctest(1)` dashboard client script.

Cobertura
'''''''''

Using `Cobertura`_ as the coverage generation within your multi-module
Java project can generate a series of XML files.

The Cobertura Coverage parser expects to read the coverage data from a
single XML file which contains the coverage data for all modules.
Cobertura has a program with the ability to merge given cobertura.ser files
and then another program to generate a combined XML file from the previous
merged file.  For command line testing, this can be done by hand prior to
CTest looking for the coverage files. For script builds,
set the ``CTEST_COVERAGE_COMMAND`` variable to point to a file which will
perform these same steps, such as a .sh or .bat file.

.. code-block:: cmake

  set(CTEST_COVERAGE_COMMAND .../run-coverage-and-consolidate.sh)

where the ``run-coverage-and-consolidate.sh`` script is perhaps created by
the :command:`configure_file` command and might contain the following code:

.. code-block:: bash

  #!/usr/bin/env bash
  CoberturaFiles="$(find "/path/to/source" -name "cobertura.ser")"
  SourceDirs="$(find "/path/to/source" -name "java" -type d)"
  cobertura-merge --datafile coberturamerge.ser $CoberturaFiles
  cobertura-report --datafile coberturamerge.ser --destination . \
                   --format xml $SourceDirs

The script uses ``find`` to capture the paths to all of the cobertura.ser files
found below the project's source directory.  It keeps the list of files and
supplies it as an argument to the ``cobertura-merge`` program. The ``--datafile``
argument signifies where the result of the merge will be kept.

The combined ``coberturamerge.ser`` file is then used to generate the XML report
using the ``cobertura-report`` program.  The call to the cobertura-report program
requires some named arguments.

``--datafila``
  path to the merged .ser file

``--destination``
  path to put the output files(s)

``--format``
  file format to write output in: xml or html

The rest of the supplied arguments consist of the full paths to the
/src/main/java directories of each module within the souce tree. These
directories are needed and should not be forgotten.

.. _`Cobertura`: http://cobertura.github.io/cobertura/
