33 lines
854 B
Bash
Executable File
33 lines
854 B
Bash
Executable File
#!/bin/bash
|
|
# Check test coverage against minimum threshold.
|
|
|
|
set -euo pipefail
|
|
|
|
COVERAGE_FILE="${1:-.build/coverage.out}"
|
|
MIN_COVERAGE="${2:-80}"
|
|
|
|
if [ ! -f "$COVERAGE_FILE" ]; then
|
|
echo "Error: coverage file not found: $COVERAGE_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Extract total coverage percentage from go tool cover output.
|
|
COVERAGE=$(go tool cover -func "$COVERAGE_FILE" | awk '/^total:/ { match($0, /[0-9.]+%/); print substr($0, RSTART, RLENGTH-1) }')
|
|
|
|
if [ -z "$COVERAGE" ]; then
|
|
echo "Error: failed to parse coverage from $COVERAGE_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Total coverage: ${COVERAGE}%"
|
|
|
|
# Compare as integer part to keep shell arithmetic simple and portable.
|
|
COVERAGE_INT=${COVERAGE%.*}
|
|
|
|
if [ "$COVERAGE_INT" -lt "$MIN_COVERAGE" ]; then
|
|
echo "Coverage ${COVERAGE}% is below minimum ${MIN_COVERAGE}%"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Coverage check passed"
|