forked from baron/baron-sso
66 lines
1.6 KiB
Bash
66 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
WORK_DIR="$(mktemp -d)"
|
|
trap 'rm -rf "$WORK_DIR"' EXIT
|
|
|
|
mkdir -p "$WORK_DIR/userfront/coverage"
|
|
|
|
cat > "$WORK_DIR/userfront/coverage/lcov.info" <<'LCOV'
|
|
SF:lib/main.dart
|
|
DA:1,1
|
|
DA:2,0
|
|
LF:2
|
|
LH:1
|
|
end_of_record
|
|
SF:lib/i18n_data.dart
|
|
DA:1,0
|
|
LF:1
|
|
LH:0
|
|
end_of_record
|
|
SF:lib/features/auth/domain/login_challenge_resolver.dart
|
|
DA:10,1
|
|
DA:11,1
|
|
DA:12,0
|
|
LF:3
|
|
LH:2
|
|
end_of_record
|
|
SF:lib/core/services/logout_service.dart
|
|
DA:20,1
|
|
DA:21,1
|
|
LF:2
|
|
LH:2
|
|
end_of_record
|
|
LCOV
|
|
|
|
(
|
|
cd "$WORK_DIR"
|
|
node "$ROOT_DIR/scripts/summarize_flutter_coverage.mjs" userfront
|
|
)
|
|
|
|
node - "$WORK_DIR/reports/package-coverage-summary.json" <<'NODE'
|
|
const fs = require("node:fs");
|
|
|
|
const summary = JSON.parse(fs.readFileSync(process.argv[2], "utf8"));
|
|
const row = summary.packages[0];
|
|
|
|
function assertEqual(actual, expected, message) {
|
|
if (actual !== expected) {
|
|
throw new Error(`${message}: expected ${expected}, got ${actual}`);
|
|
}
|
|
}
|
|
|
|
assertEqual(row.package, "userfront", "package name");
|
|
assertEqual(row.statements, 80, "line coverage must exclude bootstrap/generated files");
|
|
assertEqual(row.lines, 80, "lines coverage must match statements for Flutter lcov");
|
|
assertEqual(row.coveredLines, 4, "covered lines");
|
|
assertEqual(row.totalLines, 5, "total lines");
|
|
assertEqual(row.lcovPath, "userfront/coverage/lcov.info", "lcov path");
|
|
NODE
|
|
|
|
grep -Fq "| userfront | 80.00% | 4 / 5 | userfront/coverage/lcov.info |" \
|
|
"$WORK_DIR/reports/userfront-coverage-summary.md"
|
|
|
|
echo "OK: userfront Flutter LCOV summary is generated"
|