diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-07 10:21:22 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-07 10:21:22 +0100 |
| commit | 9a7adcf4afa5b96122ed929ab73eedbf61f08b86 (patch) | |
| tree | 15cd7b8ef471ff47bda6cb6e06c4006b698a3ee4 /scripts | |
| parent | 2cadafb2821ca46bd29dd82ef718302472f2eff3 (diff) | |
fix(coverage): Handle moved files and clean stale coverage data
Problem: Coverage script failed with error:
lcov: ERROR: (source) unable to open /Users/skal/demo/src/platform.cc
Root Cause:
- Old .gcno/.gcda coverage files referenced old src/platform.cc path
- File was moved to src/platform/platform.cc in earlier refactor
- Stale coverage data persisted between runs
Solution:
1. Added 'source' to LCOV_OPTS ignore list
- Handles missing source files gracefully
- Common when files are moved/renamed between coverage runs
2. Enable automatic cleanup of build_coverage/ directory
- Removes stale coverage data before each run
- Prevents conflicts from moved/renamed files
- Changed from commented-out to active cleanup
Result:
- Coverage report generates successfully
- 57.8% line coverage, 76.0% function coverage
- No errors about missing src/platform.cc
- Clean builds prevent stale data accumulation
The script now handles project reorganizations gracefully.
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/gen_coverage_report.sh | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/scripts/gen_coverage_report.sh b/scripts/gen_coverage_report.sh index b569251..46eb98f 100755 --- a/scripts/gen_coverage_report.sh +++ b/scripts/gen_coverage_report.sh @@ -9,8 +9,9 @@ BUILD_DIR="${PROJECT_ROOT}/build_coverage" REPORT_DIR="${PROJECT_ROOT}/build_coverage/coverage_report" TARGET_FILTER="$1" -# Common lcov options to handle AppleClang quirks -LCOV_OPTS="--ignore-errors mismatch,inconsistent,gcov,format,unsupported,category" +# Common lcov options to handle AppleClang quirks and missing source files +# (source errors can occur when files are moved/renamed between coverage runs) +LCOV_OPTS="--ignore-errors mismatch,inconsistent,gcov,format,unsupported,category,source" echo "=== Code Coverage Report Generator ===" echo "Project Root: ${PROJECT_ROOT}" @@ -25,8 +26,12 @@ if ! command -v lcov &> /dev/null; then exit 1 fi -# Cleanup previous build if requested (optional, but safer for coverage) -# rm -rf "${BUILD_DIR}" +# Cleanup previous build to avoid stale coverage data from moved/renamed files +echo "--- Cleaning Previous Coverage Build ---" +if [ -d "${BUILD_DIR}" ]; then + echo "Removing stale build directory: ${BUILD_DIR}" + rm -rf "${BUILD_DIR}" +fi mkdir -p "${BUILD_DIR}" cd "${BUILD_DIR}" |
