Commit 8487c78f authored by Ramon Nou's avatar Ramon Nou
Browse files

Enable coverage information generation and tracking

This MR enables the generation of code coverage reports for the source code. More specifically, it introduces the following changes:

- Adds the `gkfs-code-coverage.cmake` CMake script under `{PROJECT_ROOT}/CMake/` and includes it in the project's main `CMakeLists.txt`. This script defines the `GKFS_ENABLE_CODE_COVERAGE` option to control whether code coverage should be enabled when building, as well as the `target_code_coverage()` function to ensure that the appropriate flags are added to a CMake target.
- Adds `gcovr` to GekkoFS docker build image.
- Adds a `coverage.sh` script under `{PROJECT_ROOT}/scripts/ci` that provides both a `capture` and a `merge` work modes. This script abstracts away the direct usage of `gcovr` and allows the appropriate generation of coverage reports when running tests **in parallel** in the CI. The script relies on a `.coverage-exclusions` file (also under `{PROJECT_ROOT}/scripts/ci`) to control which paths should be excluded from coverage reporting (e.g. `/usr/include/.*`).
- Adds a new `report` stage in the CI pipeline that upon completion generates artifacts both for a Cobertura XML and a HTML code coverage reports.

See merge request !77
parents 460cabe0 2c750281
Pipeline #1593 passed with stages
in 17 minutes and 8 seconds