From ffe919067a85d2690b0b55d1bb6a71977c1fe5df Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Thu, 17 Jun 2021 15:02:33 +0200
Subject: [PATCH] [ci] Generate coverage vis.

---
 scripts/ci/jobs/code-coverage.yml             |  3 ++-
 scripts/cmake/CMakeSetup.cmake                |  2 +-
 scripts/cmake/Coverage.cmake                  | 18 ++++++++++++++++++
 scripts/test/generate_coverage_vis_data.in.py |  4 +++-
 4 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/scripts/ci/jobs/code-coverage.yml b/scripts/ci/jobs/code-coverage.yml
index fc95559ae5d..ac68e457ea9 100644
--- a/scripts/ci/jobs/code-coverage.yml
+++ b/scripts/ci/jobs/code-coverage.yml
@@ -21,13 +21,14 @@ code coverage:
     - genhtml --demangle-cpp -o coverage_report coverage.info
     - wget https://raw.github.com/eriwen/lcov-to-cobertura-xml/master/lcov_cobertura/lcov_cobertura.py
     - poetry run python lcov_cobertura.py coverage.info --base-dir $CI_PROJECT_DIR
+    - poetry run ./generate_coverage_vis_data.py
   artifacts:
-    expose_as: 'Coverage'
     paths:
       - Coverage.html
       - build/coverage/coverage_report
       - build/coverage/coverage.json
       - build/coverage/coverage.xml
+      - build/coverage/coverage_reports/*.json
     expire_in: 1 week
     reports:
       cobertura: build/coverage/coverage.xml
diff --git a/scripts/cmake/CMakeSetup.cmake b/scripts/cmake/CMakeSetup.cmake
index a549b6247c7..763b6f4bc0d 100644
--- a/scripts/cmake/CMakeSetup.cmake
+++ b/scripts/cmake/CMakeSetup.cmake
@@ -13,7 +13,7 @@ endif()
 CPMAddPackage(
     NAME cmake-modules
     GITHUB_REPOSITORY bilke/cmake-modules
-    GIT_TAG d6d1a778e41cb114e5cdf279b8a659fa0ce9a0d4
+    GIT_TAG d98828f54f6974717798e63195cfbf08fe2daad0
     DOWNLOAD_ONLY YES
 )
 set(CMAKE_MODULE_PATH
diff --git a/scripts/cmake/Coverage.cmake b/scripts/cmake/Coverage.cmake
index 0689aee21cf..0fb66a367f4 100644
--- a/scripts/cmake/Coverage.cmake
+++ b/scripts/cmake/Coverage.cmake
@@ -38,6 +38,8 @@ endif()
 setup_target_for_coverage_fastcov(
     NAME
     testrunner_coverage
+    BASE_DIRECTORY
+    ${PROJECT_BINARY_DIR}
     EXECUTABLE
     $<TARGET_FILE:testrunner>
     -l
@@ -46,6 +48,7 @@ setup_target_for_coverage_fastcov(
     DEPENDENCIES
     testrunner
     FASTCOV_ARGS
+    --branch-coverage
     --include
     ${PROJECT_SOURCE_DIR}
     ${COVERAGE_ADDITIONAL_ARGS}
@@ -59,6 +62,8 @@ setup_target_for_coverage_fastcov(
 setup_target_for_coverage_fastcov(
     NAME
     ctest_coverage
+    BASE_DIRECTORY
+    ${PROJECT_BINARY_DIR}
     EXECUTABLE
     ctest
     -E
@@ -66,14 +71,27 @@ setup_target_for_coverage_fastcov(
     DEPENDENCIES
     all
     FASTCOV_ARGS
+    --branch-coverage
     --include
     ${PROJECT_SOURCE_DIR}
     ${COVERAGE_ADDITIONAL_ARGS}
     EXCLUDE
     Applications/CLI/
     Tests/
+    POST_CMD
+    perl
+    -i
+    -pe
+    s!${PROJECT_SOURCE_DIR}/!!g
+    ctest_coverage.json
+    NO_DEMANGLE
 )
 
 if(UNIX)
     add_custom_target(clean_coverage find . -name '*.gcda' -delete)
 endif()
+
+configure_file(
+    ${PROJECT_SOURCE_DIR}/scripts/test/generate_coverage_vis_data.in.py
+    ${PROJECT_BINARY_DIR}/generate_coverage_vis_data.py @ONLY
+)
diff --git a/scripts/test/generate_coverage_vis_data.in.py b/scripts/test/generate_coverage_vis_data.in.py
index 649884118d0..1944db4f297 100755
--- a/scripts/test/generate_coverage_vis_data.in.py
+++ b/scripts/test/generate_coverage_vis_data.in.py
@@ -2,7 +2,9 @@
 
 import os
 
-ctests = ["SurfaceComplexation", "EquilibriumPhase", "KineticReactant"]
+# need to increase OGS_CTEST_MAX_RUNTIME to enable these:
+# ctests = ["SurfaceComplexation", "EquilibriumPhase", "KineticReactant"]
+ctests = ["SteadyState", "ComponentTransport", "ThermoHydroMechanics"]
 report_path = "./coverage_reports"
 
 os.makedirs(report_path, exist_ok=True)
-- 
GitLab