From 9a7adcf4afa5b96122ed929ab73eedbf61f08b86 Mon Sep 17 00:00:00 2001 From: skal Date: Sat, 7 Feb 2026 10:21:22 +0100 Subject: 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. --- scripts/gen_coverage_report.sh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'scripts') 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}" -- cgit v1.2.3