@@ -28,31 +28,42 @@ mkdir -p "$COVERAGE_DIR"
2828lcov --capture --directory " $BUILD_DIR " \
2929 --output-file " $COVERAGE_DIR /coverage.info" \
3030 --ignore-errors inconsistent,format \
31- --quiet 2> /dev/null || true
31+ --quiet 2> /dev/null
3232
3333# Remove system and test files from coverage
3434lcov --remove " $COVERAGE_DIR /coverage.info" \
3535 ' /usr/*' \
3636 ' */build/_deps/*' \
3737 ' */tests/*' \
3838 ' */benchmarks/*' \
39+ ' */src/main.cpp' \
3940 --output-file " $COVERAGE_DIR /coverage.info" \
4041 --ignore-errors unused \
41- --quiet 2> /dev/null || true
42+ --quiet 2> /dev/null
4243
4344# Show summary
4445echo " "
4546echo " ==============================="
4647echo " Coverage Summary"
4748echo " ==============================="
48- lcov --summary " $COVERAGE_DIR /coverage.info" 2>&1 | grep -E " (lines|functions).*:" || echo " No coverage data found"
49+
50+ # Check if coverage file exists and has data
51+ if [ ! -f " $COVERAGE_DIR /coverage.info" ] || [ ! -s " $COVERAGE_DIR /coverage.info" ]; then
52+ echo " ⚠️ Warning: No coverage data generated"
53+ echo " Coverage file not found or empty!"
54+ exit 0
55+ fi
56+
57+ # Display summary (capture full output for better debugging)
58+ SUMMARY_OUTPUT=$( lcov --summary " $COVERAGE_DIR /coverage.info" 2>&1 )
59+ echo " $SUMMARY_OUTPUT " | grep -E " (lines|functions)" || echo " $SUMMARY_OUTPUT "
4960
5061# Extract line coverage percentage and check threshold
51- COVERAGE=$( lcov --summary " $COVERAGE_DIR /coverage.info " 2>&1 | awk -F' [ :%]+' ' /lines/ {print $3}' || echo " 0 " )
62+ COVERAGE=$( echo " $SUMMARY_OUTPUT " | awk -F' [ :%]+' ' /lines/ {print $3}' )
5263
53- if [ " $COVERAGE " = " 0 " ] || [ -z " $COVERAGE " ]; then
64+ if [ -z " $COVERAGE " ] || [ " $COVERAGE " = " 0 " ]; then
5465 echo " "
55- echo " ⚠️ Warning: No coverage data generated "
66+ echo " ⚠️ Warning: Could not extract coverage percentage "
5667 echo " Make sure your tests actually execute source code!"
5768 exit 0
5869fi
0 commit comments