@@ -18,29 +18,44 @@ jobs:
18
18
sudo apt-get update
19
19
sudo apt-get install -y build-essential cmake lcov
20
20
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
21
27
22
28
- name : Configure CMake
23
29
run : |
24
30
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"
26
33
27
34
- name : Build
28
- run : cmake --build build --clean-first
35
+ run : |
36
+ cmake --build build --clean-first
29
37
30
38
- name : Run Tests
31
39
working-directory : ./build
32
40
run : ./ConcurrentHashMapTest
33
41
34
- - name : Generate Coverage Report
42
+ - name : Generate Coverage (lcov)
35
43
run : |
36
44
lcov --capture --directory ./build --output-file coverage.info \
37
45
--rc geninfo_unexecuted_blocks=1 \
38
- --ignore-errors mismatch
46
+ --ignore-errors mismatch,negative
39
47
lcov --remove coverage.info '/usr/*' '*/test/*' --output-file coverage.info
40
48
lcov --list coverage.info
41
49
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
+
42
55
- name : Upload to Codecov
43
56
uses : codecov/codecov-action@v5
44
57
with :
45
58
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