mirror of
https://github.com/saltbo/zpan.git
synced 2026-08-29 00:01:42 +08:00
25 lines
821 B
Bash
Executable File
25 lines
821 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
threshold="${CMD_COVERAGE_MIN:-70}"
|
|
profile="$(mktemp "${TMPDIR:-/tmp}/zpan-cmd-coverage.XXXXXX")"
|
|
filtered="$(mktemp "${TMPDIR:-/tmp}/zpan-cmd-coverage-filtered.XXXXXX")"
|
|
trap 'rm -f "$profile" "$filtered"' EXIT
|
|
|
|
go test ./... -coverprofile="$profile"
|
|
grep -v 'internal/openapi/client\.gen\.go' "$profile" >"$filtered"
|
|
|
|
coverage="$(go tool cover -func="$filtered" | awk '/^total:/ { sub(/%$/, "", $3); print $3 }')"
|
|
if [ -z "$coverage" ]; then
|
|
echo "failed to read cmd coverage total" >&2
|
|
exit 1
|
|
fi
|
|
|
|
awk -v coverage="$coverage" -v threshold="$threshold" 'BEGIN {
|
|
if (coverage + 0 < threshold + 0) {
|
|
printf("cmd coverage %.1f%% is below %.1f%%\n", coverage, threshold) > "/dev/stderr"
|
|
exit 1
|
|
}
|
|
printf("cmd coverage %.1f%% meets %.1f%% threshold\n", coverage, threshold)
|
|
}'
|