Skip to content

Commit d8dc627

Browse files
fix: coverage exclusion & improved CI diagnostics
1 parent 8de94e9 commit d8dc627

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

scripts/coverage-ci.sh

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,31 +28,42 @@ mkdir -p "$COVERAGE_DIR"
2828
lcov --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
3434
lcov --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
4445
echo ""
4546
echo "==============================="
4647
echo " Coverage Summary"
4748
echo "==============================="
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
5869
fi

0 commit comments

Comments
 (0)