Skip to content

Commit cb88177

Browse files
committed
Add code coverage reporting
Assisted-by: Cursor
1 parent 894a75f commit cb88177

1 file changed

Lines changed: 28 additions & 2 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,48 @@ jobs:
2525
diffutils \
2626
xmlto \
2727
libpcre2-dev \
28-
gnulib
28+
gnulib \
29+
lcov
2930
3031
- name: Bootstrap
3132
run: ./bootstrap
3233

3334
- name: Configure
3435
run: |
3536
./configure \
36-
--with-pcre2
37+
--with-pcre2 \
38+
CFLAGS="--coverage -g -O0" \
39+
LDFLAGS="--coverage"
3740
3841
- name: Build
3942
run: make -j$(nproc)
4043

4144
- name: Run tests
4245
run: make check
4346

47+
- name: Generate coverage report
48+
run: |
49+
# Create coverage directory
50+
mkdir -p coverage
51+
52+
# Capture coverage data with geninfo options to handle warnings
53+
lcov --capture --directory . --output-file coverage/coverage.info --rc geninfo_unexecuted_blocks=1
54+
55+
# Remove coverage data for system headers, lib files, and test files
56+
lcov --remove coverage/coverage.info '/usr/*' '*/lib/*' '*/tests/*' --output-file coverage/coverage_filtered.info
57+
58+
# Generate HTML report
59+
genhtml coverage/coverage_filtered.info --output-directory coverage/html
60+
61+
# Generate summary for CI
62+
lcov --summary coverage/coverage_filtered.info
63+
64+
- name: Upload coverage reports
65+
uses: actions/upload-artifact@v4
66+
with:
67+
name: coverage-report
68+
path: coverage/
69+
4470
- name: Show test results on failure
4571
if: failure()
4672
run: |

0 commit comments

Comments
 (0)