From dae2c7b24a0658199d876a4e5925383a66f5eea9 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 11:37:10 +0200 Subject: [PATCH 01/15] Add code coverage --- .github/workflows/windows.yml | 29 +++++++++++++++++++- CMakeLists.txt | 7 +++++ cmake/code_coverage.cmake | 51 +++++++++++++++++++++++++++++++++++ tests/CMakeLists.txt | 5 ++++ 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 cmake/code_coverage.cmake diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 73768b2..58fbf69 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -29,14 +29,24 @@ jobs: init-shell: bash cache-environment: true + - name: Enable tests coverage + if: matrix.build_type == 'Debug' + run: | + choco install opencppcoverage + echo "TEST_COVERAGE_ACTIVATION=' -DENABLE_COVERAGE=ON'" >> $GITHUB_ENV + - name: Configure using cmake run: | + #if [[ "${{ matrix.build_type }}" == "Debug" ]]; then + #export CMAKE_ARGS="-DENABLE_COVERAGE=ON" + #fi cmake -S ./ -B ./build \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DSPARROW_IPC_BUILD_TESTS=ON + -DSPARROW_IPC_BUILD_TESTS=ON \ + $TEST_COVERAGE_ACTIVATION - name: Build sparrow-ipc working-directory: build @@ -51,6 +61,23 @@ jobs: run: | cmake --build . --target run_tests + - name: Tests coverage + if: matrix.build_type == 'Debug' + working-directory: build + run: | + cmake --build . --config Debug --target generate_cobertura + + - name: Upload coverage to Codecov + if: matrix.build_type == 'Debug' + uses: codecov/codecov-action@v5 + with: + directory: ./build/coverage_reports/ + fail_ci_if_error: true + files: ./cobertura.xml + flags: unittests + token: ${{ secrets.CODECOV_TOKEN }} + verbose: true + windows_build_fetch_from_source: runs-on: windows-latest strategy: diff --git a/CMakeLists.txt b/CMakeLists.txt index a30fa81..9be3a36 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,9 @@ MESSAGE(STATUS "🔧 Build tests: ${SPARROW_IPC_BUILD_TESTS}") OPTION(BUILD_DOCS "Build sparrow-ipc documentation" OFF) MESSAGE(STATUS "🔧 Build docs: ${BUILD_DOCS}") +OPTION(ENABLE_COVERAGE "Enable test coverage" OFF) +MESSAGE(STATUS "🔧 Enable coverage: ${ENABLE_COVERAGE}") + set(SPARROW_IPC_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) set(SPARROW_IPC_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) @@ -156,6 +159,10 @@ target_link_libraries(sparrow-ipc add_dependencies(sparrow-ipc generate_flatbuffers_headers) +if(ENABLE_COVERAGE) + include(code_coverage) + enable_coverage(sparrow-ipc) +endif() # Tests # ===== if(SPARROW_IPC_BUILD_TESTS) diff --git a/cmake/code_coverage.cmake b/cmake/code_coverage.cmake new file mode 100644 index 0000000..48e95b8 --- /dev/null +++ b/cmake/code_coverage.cmake @@ -0,0 +1,51 @@ +if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + message(WARNING "Code coverage results with an optimised (non-Debug) build may be misleading") +endif() + +set(COVERAGE_REPORT_PATH "${CMAKE_BINARY_DIR}/coverage_reports" CACHE PATH "Path to store coverage reports") +set(COBERTURA_REPORT_PATH "${COVERAGE_REPORT_PATH}/cobertura.xml" CACHE PATH "Path to store cobertura report") +set(COVERAGE_TARGETS_FOLDER "Tests utilities/Code Coverage") + +if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + message(STATUS "==============> Using MSVC") + find_program(OpenCPPCoverage OpenCppCoverage.exe opencppcoverage.exe REQUIRED + PATHS "C:/Program Files/OpenCppCoverage" "C:/Program Files (x86)/OpenCppCoverage") + + cmake_path(CONVERT ${CMAKE_SOURCE_DIR} TO_NATIVE_PATH_LIST OPENCPPCOVERAGE_SOURCES) + set(OPENCPPCOVERAGE_COMMON_ARGS --sources=${OPENCPPCOVERAGE_SOURCES} --modules=${OPENCPPCOVERAGE_SOURCES} --excluded_sources=test*) + + add_custom_target(generate_cobertura + COMMAND ${OpenCPPCoverage} + ${OPENCPPCOVERAGE_COMMON_ARGS} + --export_type=cobertura:${COBERTURA_REPORT_PATH} + -- $ + DEPENDS test_sparrow_ipc_lib + COMMENT "Generating coverage cobertura report with OpenCppCoverage: ${COBERTURA_REPORT_PATH}" + ) + set(TARGET_PROPERTIES generate_cobertura PROPERTIES FOLDER ${COVERAGE_TARGETS_FOLDER}) + + add_custom_target(generate_html_coverage_report + COMMAND ${OpenCPPCoverage} + ${OPENCPPCOVERAGE_COMMON_ARGS} + --export_type=html:${COVERAGE_REPORT_PATH} + -- $ + DEPENDS test_sparrow_ipc_lib + COMMENT "Generating coverage report with OpenCppCoverage: ${COVERAGE_REPORT_PATH}" + ) + set(TARGET_PROPERTIES generate_cobertura PROPERTIES FOLDER "Tests utilities/Code Coverage") +elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + message(STATUS "==============> Using Clang or GNU") +endif() + +#TODO this may not be useful if coverage only on Windows ci? +function(enable_coverage target) + set(CLANG_COVERAGE_FLAGS --coverage -fprofile-instr-generate -fcoverage-mapping -fno-inline -fno-elide-constructors) + set(GCC_COVERAGE_FLAGS --coverage -fno-inline -fno-inline-small-functions -fno-default-inline) + + target_compile_options(${target} PRIVATE + $<$:${CLANG_COVERAGE_FLAGS}> + $<$:${GCC_COVERAGE_FLAGS}>) + target_link_options(${target} PRIVATE + $<$:${CLANG_COVERAGE_FLAGS}> + $<$:${GCC_COVERAGE_FLAGS}>) +endfunction(enable_coverage target) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e184974..f6a4b78 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -13,6 +13,11 @@ set( ) add_executable(${test_target} ${SPARROW_IPC_TESTS_SRC}) + +if(ENABLE_COVERAGE) + enable_coverage(${test_target}) +endif() + target_link_libraries(${test_target} PRIVATE sparrow-ipc From 2872aff0ffe410b20258977ea1394707552820b5 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 14:45:19 +0200 Subject: [PATCH 02/15] Run coverage in windows from source --- .github/workflows/windows.yml | 52 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 58fbf69..9b62ef8 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -29,17 +29,8 @@ jobs: init-shell: bash cache-environment: true - - name: Enable tests coverage - if: matrix.build_type == 'Debug' - run: | - choco install opencppcoverage - echo "TEST_COVERAGE_ACTIVATION=' -DENABLE_COVERAGE=ON'" >> $GITHUB_ENV - - name: Configure using cmake run: | - #if [[ "${{ matrix.build_type }}" == "Debug" ]]; then - #export CMAKE_ARGS="-DENABLE_COVERAGE=ON" - #fi cmake -S ./ -B ./build \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ @@ -61,23 +52,6 @@ jobs: run: | cmake --build . --target run_tests - - name: Tests coverage - if: matrix.build_type == 'Debug' - working-directory: build - run: | - cmake --build . --config Debug --target generate_cobertura - - - name: Upload coverage to Codecov - if: matrix.build_type == 'Debug' - uses: codecov/codecov-action@v5 - with: - directory: ./build/coverage_reports/ - fail_ci_if_error: true - files: ./cobertura.xml - flags: unittests - token: ${{ secrets.CODECOV_TOKEN }} - verbose: true - windows_build_fetch_from_source: runs-on: windows-latest strategy: @@ -88,13 +62,20 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Enable tests coverage + if: matrix.build_type == 'Debug' + run: | + choco install opencppcoverage + echo "TEST_COVERAGE_ACTIVATION=' -DENABLE_COVERAGE=ON'" >> $GITHUB_ENV + - name: Configure using cmake run: | cmake -S ./ -B ./build \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DSPARROW_IPC_BUILD_TESTS=ON \ - -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING + -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING \ + $TEST_COVERAGE_ACTIVATION - name: Build sparrow-ipc working-directory: build @@ -107,3 +88,20 @@ jobs: - name: Run tests working-directory: build run: cmake --build . --target run_tests_with_junit_report + + - name: Tests coverage + if: matrix.build_type == 'Debug' + working-directory: build + run: | + cmake --build . --config Debug --target generate_cobertura + + - name: Upload coverage to Codecov + if: matrix.build_type == 'Debug' + uses: codecov/codecov-action@v5 + with: + directory: ./build/coverage_reports/ + fail_ci_if_error: true + files: ./cobertura.xml + flags: unittests + token: ${{ secrets.CODECOV_TOKEN }} + verbose: true From db3c0f94808afb9c66a48db3942b371c5f7ac828 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 14:48:15 +0200 Subject: [PATCH 03/15] Remove leftover --- .github/workflows/windows.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 9b62ef8..3c66081 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -36,8 +36,7 @@ jobs: -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DSPARROW_IPC_BUILD_TESTS=ON \ - $TEST_COVERAGE_ACTIVATION + -DSPARROW_IPC_BUILD_TESTS=ON - name: Build sparrow-ipc working-directory: build From 6ff0634856a5e012bf8df9ad80cf8e97331e2e1d Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 15:04:15 +0200 Subject: [PATCH 04/15] Use another target name --- .github/workflows/windows.yml | 2 +- cmake/code_coverage.cmake | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 3c66081..abc4bd2 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -92,7 +92,7 @@ jobs: if: matrix.build_type == 'Debug' working-directory: build run: | - cmake --build . --config Debug --target generate_cobertura + cmake --build . --config Debug --target sparrow_ipc_generate_cobertura - name: Upload coverage to Codecov if: matrix.build_type == 'Debug' diff --git a/cmake/code_coverage.cmake b/cmake/code_coverage.cmake index 48e95b8..3c668f6 100644 --- a/cmake/code_coverage.cmake +++ b/cmake/code_coverage.cmake @@ -14,7 +14,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") cmake_path(CONVERT ${CMAKE_SOURCE_DIR} TO_NATIVE_PATH_LIST OPENCPPCOVERAGE_SOURCES) set(OPENCPPCOVERAGE_COMMON_ARGS --sources=${OPENCPPCOVERAGE_SOURCES} --modules=${OPENCPPCOVERAGE_SOURCES} --excluded_sources=test*) - add_custom_target(generate_cobertura + add_custom_target(sparrow_ipc_generate_cobertura COMMAND ${OpenCPPCoverage} ${OPENCPPCOVERAGE_COMMON_ARGS} --export_type=cobertura:${COBERTURA_REPORT_PATH} @@ -22,9 +22,9 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") DEPENDS test_sparrow_ipc_lib COMMENT "Generating coverage cobertura report with OpenCppCoverage: ${COBERTURA_REPORT_PATH}" ) - set(TARGET_PROPERTIES generate_cobertura PROPERTIES FOLDER ${COVERAGE_TARGETS_FOLDER}) + set(TARGET_PROPERTIES sparrow_ipc_generate_cobertura PROPERTIES FOLDER ${COVERAGE_TARGETS_FOLDER}) - add_custom_target(generate_html_coverage_report + add_custom_target(sparrow_ipc_generate_html_coverage_report COMMAND ${OpenCPPCoverage} ${OPENCPPCOVERAGE_COMMON_ARGS} --export_type=html:${COVERAGE_REPORT_PATH} @@ -32,7 +32,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") DEPENDS test_sparrow_ipc_lib COMMENT "Generating coverage report with OpenCppCoverage: ${COVERAGE_REPORT_PATH}" ) - set(TARGET_PROPERTIES generate_cobertura PROPERTIES FOLDER "Tests utilities/Code Coverage") + set(TARGET_PROPERTIES sparrow_ipc_generate_cobertura PROPERTIES FOLDER "Tests utilities/Code Coverage") elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") message(STATUS "==============> Using Clang or GNU") endif() From cfbcb4bf501f4442ca610af7ebbeb5739c964b22 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 15:17:23 +0200 Subject: [PATCH 05/15] Rename ENABLE_COVERAGE --- .github/workflows/windows.yml | 2 +- CMakeLists.txt | 8 ++++---- cmake/code_coverage.cmake | 22 +++++++++++----------- tests/CMakeLists.txt | 6 +++--- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index abc4bd2..3655300 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -65,7 +65,7 @@ jobs: if: matrix.build_type == 'Debug' run: | choco install opencppcoverage - echo "TEST_COVERAGE_ACTIVATION=' -DENABLE_COVERAGE=ON'" >> $GITHUB_ENV + echo "TEST_COVERAGE_ACTIVATION=' -DSPARROW_IPC_ENABLE_COVERAGE=ON'" >> $GITHUB_ENV - name: Configure using cmake run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index 9be3a36..efc59ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,8 +47,8 @@ MESSAGE(STATUS "🔧 Build tests: ${SPARROW_IPC_BUILD_TESTS}") OPTION(BUILD_DOCS "Build sparrow-ipc documentation" OFF) MESSAGE(STATUS "🔧 Build docs: ${BUILD_DOCS}") -OPTION(ENABLE_COVERAGE "Enable test coverage" OFF) -MESSAGE(STATUS "🔧 Enable coverage: ${ENABLE_COVERAGE}") +OPTION(SPARROW_IPC_ENABLE_COVERAGE "Enable test coverage" OFF) +MESSAGE(STATUS "🔧 Enable coverage: ${SPARROW_IPC_ENABLE_COVERAGE}") set(SPARROW_IPC_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) set(SPARROW_IPC_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) @@ -159,9 +159,9 @@ target_link_libraries(sparrow-ipc add_dependencies(sparrow-ipc generate_flatbuffers_headers) -if(ENABLE_COVERAGE) +if(SPARROW_IPC_ENABLE_COVERAGE) include(code_coverage) - enable_coverage(sparrow-ipc) + #enable_coverage(sparrow-ipc) endif() # Tests # ===== diff --git a/cmake/code_coverage.cmake b/cmake/code_coverage.cmake index 3c668f6..b3257db 100644 --- a/cmake/code_coverage.cmake +++ b/cmake/code_coverage.cmake @@ -38,14 +38,14 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL " endif() #TODO this may not be useful if coverage only on Windows ci? -function(enable_coverage target) - set(CLANG_COVERAGE_FLAGS --coverage -fprofile-instr-generate -fcoverage-mapping -fno-inline -fno-elide-constructors) - set(GCC_COVERAGE_FLAGS --coverage -fno-inline -fno-inline-small-functions -fno-default-inline) - - target_compile_options(${target} PRIVATE - $<$:${CLANG_COVERAGE_FLAGS}> - $<$:${GCC_COVERAGE_FLAGS}>) - target_link_options(${target} PRIVATE - $<$:${CLANG_COVERAGE_FLAGS}> - $<$:${GCC_COVERAGE_FLAGS}>) -endfunction(enable_coverage target) +# function(enable_coverage target) +# set(CLANG_COVERAGE_FLAGS --coverage -fprofile-instr-generate -fcoverage-mapping -fno-inline -fno-elide-constructors) +# set(GCC_COVERAGE_FLAGS --coverage -fno-inline -fno-inline-small-functions -fno-default-inline) +# +# target_compile_options(${target} PRIVATE +# $<$:${CLANG_COVERAGE_FLAGS}> +# $<$:${GCC_COVERAGE_FLAGS}>) +# target_link_options(${target} PRIVATE +# $<$:${CLANG_COVERAGE_FLAGS}> +# $<$:${GCC_COVERAGE_FLAGS}>) +# endfunction(enable_coverage target) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f6a4b78..4c5e263 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,9 +14,9 @@ set( add_executable(${test_target} ${SPARROW_IPC_TESTS_SRC}) -if(ENABLE_COVERAGE) - enable_coverage(${test_target}) -endif() +# if(ENABLE_COVERAGE) +# enable_coverage(${test_target}) +# endif() target_link_libraries(${test_target} PRIVATE From 1cc7c966e2d5b1b2f9515517fe64fb9d4a403134 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 16:08:27 +0200 Subject: [PATCH 06/15] Fix cmake warning --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 3655300..6ce48aa 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -65,7 +65,7 @@ jobs: if: matrix.build_type == 'Debug' run: | choco install opencppcoverage - echo "TEST_COVERAGE_ACTIVATION=' -DSPARROW_IPC_ENABLE_COVERAGE=ON'" >> $GITHUB_ENV + echo "TEST_COVERAGE_ACTIVATION=-DSPARROW_IPC_ENABLE_COVERAGE=ON" >> $GITHUB_ENV - name: Configure using cmake run: | From 1159007a225b2ab57eec55277a84575fd6f7b844 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 16:27:28 +0200 Subject: [PATCH 07/15] Fix cmake config warning --- .github/workflows/windows.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 6ce48aa..594433d 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -32,7 +32,6 @@ jobs: - name: Configure using cmake run: | cmake -S ./ -B ./build \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ @@ -40,16 +39,16 @@ jobs: - name: Build sparrow-ipc working-directory: build - run: cmake --build . --target sparrow-ipc + run: cmake --build . --config ${{ matrix.build_type }} --target sparrow-ipc - name: Build tests working-directory: build - run: cmake --build . --target test_sparrow_ipc_lib + run: cmake --build . --config ${{ matrix.build_type }} --target test_sparrow_ipc_lib - name: Run tests working-directory: build run: | - cmake --build . --target run_tests + cmake --build . --config ${{ matrix.build_type }} --target run_tests windows_build_fetch_from_source: runs-on: windows-latest @@ -70,7 +69,6 @@ jobs: - name: Configure using cmake run: | cmake -S ./ -B ./build \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DSPARROW_IPC_BUILD_TESTS=ON \ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING \ @@ -78,15 +76,15 @@ jobs: - name: Build sparrow-ipc working-directory: build - run: cmake --build . --target sparrow-ipc + run: cmake --build . --config ${{ matrix.build_type }} --target sparrow-ipc - name: Build tests working-directory: build - run: cmake --build . --target test_sparrow_ipc_lib + run: cmake --build . --config ${{ matrix.build_type }} --target test_sparrow_ipc_lib - name: Run tests working-directory: build - run: cmake --build . --target run_tests_with_junit_report + run: cmake --build . --config ${{ matrix.build_type }} --target run_tests_with_junit_report - name: Tests coverage if: matrix.build_type == 'Debug' From 9f3f3fc0aed1df58be97ff0d77d265086207612e Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 16:50:29 +0200 Subject: [PATCH 08/15] Add CTEST_OUTPUT_ON_FAILURE=1 --- .github/workflows/windows.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 594433d..a274b17 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -48,6 +48,7 @@ jobs: - name: Run tests working-directory: build run: | + export CTEST_OUTPUT_ON_FAILURE=1 cmake --build . --config ${{ matrix.build_type }} --target run_tests windows_build_fetch_from_source: From 745e66008291e829c0c4ee332a76bd53ffbc17a5 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 17:09:11 +0200 Subject: [PATCH 09/15] Remove unnecessary code --- CMakeLists.txt | 10 ++++++---- cmake/code_coverage.cmake | 16 ---------------- tests/CMakeLists.txt | 4 ---- 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index efc59ca..8b6b113 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,9 +47,15 @@ MESSAGE(STATUS "🔧 Build tests: ${SPARROW_IPC_BUILD_TESTS}") OPTION(BUILD_DOCS "Build sparrow-ipc documentation" OFF) MESSAGE(STATUS "🔧 Build docs: ${BUILD_DOCS}") +# Code coverage +# ============= OPTION(SPARROW_IPC_ENABLE_COVERAGE "Enable test coverage" OFF) MESSAGE(STATUS "🔧 Enable coverage: ${SPARROW_IPC_ENABLE_COVERAGE}") +if(SPARROW_IPC_ENABLE_COVERAGE) + include(code_coverage) +endif() + set(SPARROW_IPC_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) set(SPARROW_IPC_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) @@ -159,10 +165,6 @@ target_link_libraries(sparrow-ipc add_dependencies(sparrow-ipc generate_flatbuffers_headers) -if(SPARROW_IPC_ENABLE_COVERAGE) - include(code_coverage) - #enable_coverage(sparrow-ipc) -endif() # Tests # ===== if(SPARROW_IPC_BUILD_TESTS) diff --git a/cmake/code_coverage.cmake b/cmake/code_coverage.cmake index b3257db..c05d8a4 100644 --- a/cmake/code_coverage.cmake +++ b/cmake/code_coverage.cmake @@ -7,7 +7,6 @@ set(COBERTURA_REPORT_PATH "${COVERAGE_REPORT_PATH}/cobertura.xml" CACHE PATH "Pa set(COVERAGE_TARGETS_FOLDER "Tests utilities/Code Coverage") if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") - message(STATUS "==============> Using MSVC") find_program(OpenCPPCoverage OpenCppCoverage.exe opencppcoverage.exe REQUIRED PATHS "C:/Program Files/OpenCppCoverage" "C:/Program Files (x86)/OpenCppCoverage") @@ -33,19 +32,4 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") COMMENT "Generating coverage report with OpenCppCoverage: ${COVERAGE_REPORT_PATH}" ) set(TARGET_PROPERTIES sparrow_ipc_generate_cobertura PROPERTIES FOLDER "Tests utilities/Code Coverage") -elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - message(STATUS "==============> Using Clang or GNU") endif() - -#TODO this may not be useful if coverage only on Windows ci? -# function(enable_coverage target) -# set(CLANG_COVERAGE_FLAGS --coverage -fprofile-instr-generate -fcoverage-mapping -fno-inline -fno-elide-constructors) -# set(GCC_COVERAGE_FLAGS --coverage -fno-inline -fno-inline-small-functions -fno-default-inline) -# -# target_compile_options(${target} PRIVATE -# $<$:${CLANG_COVERAGE_FLAGS}> -# $<$:${GCC_COVERAGE_FLAGS}>) -# target_link_options(${target} PRIVATE -# $<$:${CLANG_COVERAGE_FLAGS}> -# $<$:${GCC_COVERAGE_FLAGS}>) -# endfunction(enable_coverage target) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4c5e263..5951fc2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,10 +14,6 @@ set( add_executable(${test_target} ${SPARROW_IPC_TESTS_SRC}) -# if(ENABLE_COVERAGE) -# enable_coverage(${test_target}) -# endif() - target_link_libraries(${test_target} PRIVATE sparrow-ipc From 01c3ce09263d3a3536cdbd5eb6d72a1af9bce308 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 17:17:40 +0200 Subject: [PATCH 10/15] Change message --- CMakeLists.txt | 2 +- tests/CMakeLists.txt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b6b113..572e9e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ MESSAGE(STATUS "🔧 Build docs: ${BUILD_DOCS}") # Code coverage # ============= -OPTION(SPARROW_IPC_ENABLE_COVERAGE "Enable test coverage" OFF) +OPTION(SPARROW_IPC_ENABLE_COVERAGE "Enable sparrow-ipc test coverage" OFF) MESSAGE(STATUS "🔧 Enable coverage: ${SPARROW_IPC_ENABLE_COVERAGE}") if(SPARROW_IPC_ENABLE_COVERAGE) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5951fc2..e184974 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -13,7 +13,6 @@ set( ) add_executable(${test_target} ${SPARROW_IPC_TESTS_SRC}) - target_link_libraries(${test_target} PRIVATE sparrow-ipc From 89cce14bbf3dc551e0ae7fda325e120dac877d30 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 17:27:18 +0200 Subject: [PATCH 11/15] Add enable_coverage option to docs --- docs/source/dev_build.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/source/dev_build.md b/docs/source/dev_build.md index 5daac90..14c95b8 100644 --- a/docs/source/dev_build.md +++ b/docs/source/dev_build.md @@ -10,6 +10,7 @@ List of CMake options: - `BUILD_DOCS`: Build the documentation (default: OFF) - `SPARROW_IPC_BUILD_TESTS`: Build the tests (default: OFF) - `SPARROW_IPC_BUILD_SHARED`: Build sparrow-ipc as a shared library (default: ON) +- `SPARROW_IPC_ENABLE_COVERAGE`: Enable coverage reporting (default: OFF) ## Building From 866ce5098db3e28de00f81c1db8d3249e1e215b5 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 17:35:03 +0200 Subject: [PATCH 12/15] Rename BUILD_DOCS to SPARROW_IPC_BUILD_DOCS for consistency --- .github/workflows/docs.yaml | 2 +- CMakeLists.txt | 6 +++--- conanfile.py | 2 +- docs/source/dev_build.md | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 8307c7a..b47098f 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -21,7 +21,7 @@ jobs: cache-downloads: true - name: Configure using CMake - run: cmake -G Ninja -Bbuild -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_DOCS=ON + run: cmake -G Ninja -Bbuild -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DSPARROW_IPC_BUILD_DOCS=ON - name: Build docs target run: cmake --build build --target docs diff --git a/CMakeLists.txt b/CMakeLists.txt index 572e9e1..153ae70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,8 +44,8 @@ endif() OPTION(SPARROW_IPC_BUILD_TESTS "Build sparrow-ipc test suite" OFF) MESSAGE(STATUS "🔧 Build tests: ${SPARROW_IPC_BUILD_TESTS}") -OPTION(BUILD_DOCS "Build sparrow-ipc documentation" OFF) -MESSAGE(STATUS "🔧 Build docs: ${BUILD_DOCS}") +OPTION(SPARROW_IPC_BUILD_DOCS "Build sparrow-ipc documentation" OFF) +MESSAGE(STATUS "🔧 Build docs: ${SPARROW_IPC_BUILD_DOCS}") # Code coverage # ============= @@ -175,7 +175,7 @@ endif() # Docs # ==== -if(BUILD_DOCS) +if(SPARROW_IPC_BUILD_DOCS) message(STATUS "📚 Create docs targets") add_subdirectory(docs) endif() diff --git a/conanfile.py b/conanfile.py index fc1ce51..59916f8 100644 --- a/conanfile.py +++ b/conanfile.py @@ -88,7 +88,7 @@ def generate(self): tc = CMakeToolchain(self) tc.variables["SPARROW_IPC_BUILD_SHARED"] = self.options.shared tc.variables["SPARROW_IPC_BUILD_TESTS"] = self.options.build_tests - tc.variables["BUILD_DOCS"] = self.options.generate_documentation + tc.variables["SPARROW_IPC_BUILD_DOCS"] = self.options.generate_documentation tc.generate() def build(self): diff --git a/docs/source/dev_build.md b/docs/source/dev_build.md index 14c95b8..4916fa1 100644 --- a/docs/source/dev_build.md +++ b/docs/source/dev_build.md @@ -7,7 +7,7 @@ List of CMake options: - `ACTIVATE_LINTER`: Create targets to run clang-format and clang-tidy (default: OFF) - `ACTIVATE_LINTER_DURING_COMPILATION`: Run linter during the compilation (default: OFF), requires `ACTIVATE_LINTER` to be ON -- `BUILD_DOCS`: Build the documentation (default: OFF) +- `SPARROW_IPC_BUILD_DOCS`: Build the documentation (default: OFF) - `SPARROW_IPC_BUILD_TESTS`: Build the tests (default: OFF) - `SPARROW_IPC_BUILD_SHARED`: Build sparrow-ipc as a shared library (default: ON) - `SPARROW_IPC_ENABLE_COVERAGE`: Enable coverage reporting (default: OFF) From 8df30c7fd41953d4c6ee667f45c7ded9ce569b6f Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Fri, 5 Sep 2025 17:47:54 +0200 Subject: [PATCH 13/15] Run tests consistently --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index a274b17..a474769 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -49,7 +49,7 @@ jobs: working-directory: build run: | export CTEST_OUTPUT_ON_FAILURE=1 - cmake --build . --config ${{ matrix.build_type }} --target run_tests + cmake --build . --config ${{ matrix.build_type }} --target run_tests_with_junit_report windows_build_fetch_from_source: runs-on: windows-latest From 7af735b4210e8207eaa89fc93c89223308d9c13f Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Mon, 8 Sep 2025 10:27:51 +0200 Subject: [PATCH 14/15] Change verbose mode --- .github/workflows/windows.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index a474769..3dada94 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -47,9 +47,9 @@ jobs: - name: Run tests working-directory: build - run: | - export CTEST_OUTPUT_ON_FAILURE=1 - cmake --build . --config ${{ matrix.build_type }} --target run_tests_with_junit_report + env: + CTEST_OUTPUT_ON_FAILURE: 1 + run: cmake --build . --config ${{ matrix.build_type }} --target run_tests_with_junit_report windows_build_fetch_from_source: runs-on: windows-latest From 29028c9ade17a6e229a5fb0da48874b1ef927356 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 10 Sep 2025 14:31:27 +0200 Subject: [PATCH 15/15] Remove CTEST_OUTPUT_ON_FAILURE --- .github/workflows/windows.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 3dada94..7b043c0 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -47,9 +47,8 @@ jobs: - name: Run tests working-directory: build - env: - CTEST_OUTPUT_ON_FAILURE: 1 - run: cmake --build . --config ${{ matrix.build_type }} --target run_tests_with_junit_report + run: | + cmake --build . --config ${{ matrix.build_type }} --target run_tests_with_junit_report windows_build_fetch_from_source: runs-on: windows-latest