diff --git a/.codecov.yml b/.codecov.yml index 191144aae16..650261a5851 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -4,3 +4,11 @@ coverage: default: target: 60% threshold: 2% + +parsers: + cobertura: + partials_as_hits: true + +ignore: + - "src/test/" + diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 916bd389e85..aa9a8eb1877 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -179,6 +179,8 @@ jobs: run: | mkdir -p ~/.conan tar -xzf conan.tar -C ~/.conan + - name: install gcovr + run: pip install "gcovr>=7,<8" - name: check environment run: | echo ${PATH} | tr ':' '\n' @@ -207,7 +209,7 @@ jobs: -DCMAKE_CXX_FLAGS="-O0" -DCMAKE_C_FLAGS="-O0" cmake-target: coverage - - name: build + - name: move coverage report shell: bash run: | mv "${build_dir}/coverage.xml" ./ @@ -218,13 +220,15 @@ jobs: path: coverage.xml retention-days: 30 - name: upload coverage report - uses: wandalen/wretry.action@v1.3.0 + uses: wandalen/wretry.action@v1.4.10 with: - action: codecov/codecov-action@v4 + action: codecov/codecov-action@v4.1.1 with: | files: coverage.xml fail_ci_if_error: true + disable_search: true verbose: true + plugin: noop token: ${{ secrets.CODECOV_TOKEN }} attempt_limit: 5 - attempt_delay: 35000 # in milliseconds + attempt_delay: 70000 # in milliseconds diff --git a/Builds/CMake/CodeCoverage.cmake b/Builds/CMake/CodeCoverage.cmake index d2af481d8a3..323303c92dc 100644 --- a/Builds/CMake/CodeCoverage.cmake +++ b/Builds/CMake/CodeCoverage.cmake @@ -95,6 +95,9 @@ # - replace both functions setup_target_for_coverage_gcovr_* with a single setup_target_for_coverage_gcovr # - add support for all gcovr output formats # +# 2024-04-03, Bronek Kozicki +# - add support for output formats: jacoco, clover, lcov +# # USAGE: # # 1. Copy this file into your cmake modules path. @@ -256,10 +259,10 @@ endif() # BASE_DIRECTORY "../" # Base directory for report # # (defaults to PROJECT_SOURCE_DIR) # FORMAT "cobertura" # Output format, one of: -# # xml cobertura sonarqube json-summary -# # json-details coveralls csv txt -# # html-single html-nested html-details -# # (xml is an alias to cobertura; +# # xml cobertura sonarqube jacoco clover +# # json-summary json-details coveralls csv +# # txt html-single html-nested html-details +# # lcov (xml is an alias to cobertura; # # if no format is set, defaults to xml) # EXCLUDE "src/dir1/*" "src/dir2/*" # Patterns to exclude (can be relative # # to BASE_DIRECTORY, with CMake 3.4+) @@ -308,6 +311,8 @@ function(setup_target_for_coverage_gcovr) set(GCOVR_OUTPUT_FILE ${Coverage_NAME}.txt) elseif(Coverage_FORMAT STREQUAL "csv") set(GCOVR_OUTPUT_FILE ${Coverage_NAME}.csv) + elseif(Coverage_FORMAT STREQUAL "lcov") + set(GCOVR_OUTPUT_FILE ${Coverage_NAME}.lcov) else() set(GCOVR_OUTPUT_FILE ${Coverage_NAME}.xml) endif() @@ -320,6 +325,14 @@ function(setup_target_for_coverage_gcovr) set(Coverage_FORMAT cobertura) # overwrite xml elseif(Coverage_FORMAT STREQUAL "sonarqube") list(APPEND GCOVR_ADDITIONAL_ARGS --sonarqube "${GCOVR_OUTPUT_FILE}" ) + elseif(Coverage_FORMAT STREQUAL "jacoco") + list(APPEND GCOVR_ADDITIONAL_ARGS --jacoco "${GCOVR_OUTPUT_FILE}" ) + list(APPEND GCOVR_ADDITIONAL_ARGS --jacoco-pretty ) + elseif(Coverage_FORMAT STREQUAL "clover") + list(APPEND GCOVR_ADDITIONAL_ARGS --clover "${GCOVR_OUTPUT_FILE}" ) + list(APPEND GCOVR_ADDITIONAL_ARGS --clover-pretty ) + elseif(Coverage_FORMAT STREQUAL "lcov") + list(APPEND GCOVR_ADDITIONAL_ARGS --lcov "${GCOVR_OUTPUT_FILE}" ) elseif(Coverage_FORMAT STREQUAL "json-summary") list(APPEND GCOVR_ADDITIONAL_ARGS --json-summary "${GCOVR_OUTPUT_FILE}" ) list(APPEND GCOVR_ADDITIONAL_ARGS --json-summary-pretty)