build: simpify code coverage logic

This commit is contained in:
Marcus Holland-Moritz 2024-07-29 21:45:41 +02:00
parent eb8b751146
commit 35c7d20f9e
4 changed files with 15 additions and 20 deletions

View File

@ -123,20 +123,14 @@ cmake ../dwarfs/ $CMAKE_ARGS
$BUILD_TOOL
if [[ "-$BUILD_TYPE-" == *-coverage-* ]]; then
export LLVM_PROFILE_FILE="$PWD/profile/%32m.profraw"
fi
ctest --output-on-failure -j$(nproc)
if [[ "-$BUILD_TYPE-" == *-coverage-* ]]; then
unset LLVM_PROFILE_FILE
rm -rf /tmp-runner/coverage
mkdir -p /tmp-runner/coverage
rm -f /tmp-runner/dwarfs-coverage.txt
llvm-profdata-$CLANG_VERSION merge -sparse profile/* -o dwarfs.profdata
for binary in mkdwarfs dwarfs dwarfsck dwarfsextract *_test ricepp/ricepp_test; do
llvm-cov-$CLANG_VERSION show -instr-profile=dwarfs.profdata $binary >/tmp-runner/coverage/$(basename $binary).txt
done
llvm-cov-$CLANG_VERSION show -instr-profile=dwarfs.profdata \
$(for i in mkdwarfs dwarfs dwarfsck dwarfsextract *_test ricepp/ricepp_test; do echo $i; done | sed -e's/^/-object=/') \
>/tmp-runner/dwarfs-coverage.txt
fi
if [[ "-$BUILD_TYPE-" == *-static-* ]]; then

View File

@ -326,19 +326,12 @@ jobs:
--env GITHUB_RUN_ATTEMPT \
dwarfs-linux-build-${{ matrix.dist }}
- name: List Coverage Files
id: coverage-files
if: matrix.build_type == 'clang-coverage-ninja'
run: |
files=$(find ${{ runner.temp }}/coverage -type f | paste -d, -s)
echo "list=$files" >> "$GITHUB_OUTPUT"
- name: Upload Coverage Data
if: matrix.build_type == 'clang-coverage-ninja'
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ${{ steps.coverage-files.outputs.list }}
file: ${{ runner.temp }}/dwarfs-coverage.txt
fail_ci_if_error: false
- name: Prepare Artifact Upload

View File

@ -991,7 +991,10 @@ if(WITH_TESTS)
endforeach()
foreach(tgt ${TEST_TARGETS})
gtest_discover_tests(${tgt} DISCOVERY_TIMEOUT 120)
gtest_discover_tests(${tgt}
DISCOVERY_TIMEOUT 120
PROPERTIES ENVIRONMENT "LLVM_PROFILE_FILE=${CMAKE_BINARY_DIR}/profile/%32m.profraw"
)
endforeach()
endif()
@ -1401,6 +1404,8 @@ add_custom_target(
build.ninja .ninja_deps
Makefile compile_commands.json
artifacts.env
default.profraw
profile
COMMAND
${CMAKE_COMMAND} -E rm -rf ${REALCLEAN_FILES}
)

View File

@ -192,6 +192,9 @@ if(WITH_TESTS)
endif()
if(NOT CMAKE_CROSSCOMPILING)
gtest_discover_tests(ricepp_test DISCOVERY_TIMEOUT 120)
gtest_discover_tests(ricepp_test
DISCOVERY_TIMEOUT 120
PROPERTIES ENVIRONMENT "LLVM_PROFILE_FILE=${CMAKE_BINARY_DIR}/profile/%32m.profraw"
)
endif()
endif()