From 7f41a86108e3b2bea5cd8b42737991db4e33c66f Mon Sep 17 00:00:00 2001 From: Lars Bilke Date: Mon, 10 Jun 2024 15:16:45 +0200 Subject: [PATCH 1/3] Compile with coverage on Debug-config. --- CMakeLists.txt | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 275e955..0661dcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,28 @@ if(NOT VTK_FOUND) endif() # --- CPM end --- +# Coverage (enabled by Debug-config) +if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" AND ${PROJECT_SOURCE_DIR} STREQUAL + ${CMAKE_SOURCE_DIR} +) + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + set(CMAKE_CXX_FLAGS_DEBUG "-g -Og --coverage") + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + string(APPEND CMAKE_CXX_FLAGS_DEBUG " -fprofile-abs-path") + endif() + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "--coverage") + set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "--coverage") + set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "--coverage") + message(STATUS "Setting coverage flags!") + message( + STATUS + "Run executables and the run:\n gcovr -r ${PROJECT_SOURCE_DIR}" + ) + else() + message(FATAL_ERROR "OGS_COVERAGE requires clang or gcc compiler!") + endif() +endif() + add_executable(vtkdiff vtkdiff.cpp) target_link_libraries(vtkdiff tclap VTK::IOXML) From 84ac72c34c70c688a1e2f7bb3ac011bc3dc9c4d5 Mon Sep 17 00:00:00 2001 From: Lars Bilke Date: Mon, 10 Jun 2024 15:17:16 +0200 Subject: [PATCH 2/3] [ci] Add coverage job. --- .github/workflows/cmake-single-platform.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/cmake-single-platform.yml b/.github/workflows/cmake-single-platform.yml index 88a35f8..b28e4a6 100644 --- a/.github/workflows/cmake-single-platform.yml +++ b/.github/workflows/cmake-single-platform.yml @@ -26,3 +26,20 @@ jobs: # working-directory: ${{github.workspace}}/build # run: ctest -C ${{env.BUILD_TYPE}} + coverage: + runs-on: ubuntu-latest + env: + BUILD_TYPE: Debug + steps: + - uses: actions/checkout@v4 + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + - name: Test + working-directory: ${{github.workspace}}/build + run: ./vtkdiff --help + - name: Coverage + working-directory: ${{github.workspace}}/build + run: pipx run gcovr -r ${{github.workspace}} + From 2b307e5b5a3b84672d6d56a12855540295f7ec46 Mon Sep 17 00:00:00 2001 From: Lars Bilke Date: Mon, 10 Jun 2024 15:54:42 +0200 Subject: [PATCH 3/3] [ci] Exclude cpm _deps folder for coverage. --- .github/workflows/cmake-single-platform.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake-single-platform.yml b/.github/workflows/cmake-single-platform.yml index b28e4a6..24ba1af 100644 --- a/.github/workflows/cmake-single-platform.yml +++ b/.github/workflows/cmake-single-platform.yml @@ -41,5 +41,5 @@ jobs: run: ./vtkdiff --help - name: Coverage working-directory: ${{github.workspace}}/build - run: pipx run gcovr -r ${{github.workspace}} + run: pipx run gcovr -r ${{github.workspace}} --exclude ${{github.workspace}}/build/_deps