@@ -18,29 +18,44 @@ jobs:
1818 sudo apt-get update
1919 sudo apt-get install -y build-essential cmake lcov
2020 sudo apt-get install -y libgtest-dev googletest
21+ sudo apt-get install -y gcovr # Alternative coverage tool
22+
23+ - name : Clean workspace
24+ run : |
25+ rm -rf build
26+ find . -name "*.gcda" -delete
2127
2228 - name : Configure CMake
2329 run : |
2430 cmake -B build -DCMAKE_BUILD_TYPE=Debug \
25- -DCMAKE_CXX_FLAGS="-fprofile-arcs -ftest-coverage"
31+ -DCMAKE_CXX_FLAGS="-fprofile-arcs -ftest-coverage -fprofile-update=atomic -O0" \
32+ -DCMAKE_EXE_LINKER_FLAGS="-lgcov --coverage"
2633
2734 - name : Build
28- run : cmake --build build --clean-first
35+ run : |
36+ cmake --build build --clean-first
2937
3038 - name : Run Tests
3139 working-directory : ./build
3240 run : ./ConcurrentHashMapTest
3341
34- - name : Generate Coverage Report
42+ - name : Generate Coverage (lcov)
3543 run : |
3644 lcov --capture --directory ./build --output-file coverage.info \
3745 --rc geninfo_unexecuted_blocks=1 \
38- --ignore-errors mismatch
46+ --ignore-errors mismatch,negative
3947 lcov --remove coverage.info '/usr/*' '*/test/*' --output-file coverage.info
4048 lcov --list coverage.info
4149
50+ - name : Generate Coverage (gcovr alternative)
51+ run : |
52+ gcovr -r ${{ github.workspace }} --exclude-unreachable-branches \
53+ --exclude-throw-branches --html-details coverage.html
54+
4255 - name : Upload to Codecov
4356 uses : codecov/codecov-action@v5
4457 with :
4558 token : ${{ secrets.CODECOV_TOKEN }}
46- file : coverage.info
59+ files : coverage.info,coverage.xml
60+ flags : cpp
61+ fail_ci_if_error : false
0 commit comments