forked from baron/baron-sso
userfront&backend test coverage 추가
This commit is contained in:
@@ -30,6 +30,7 @@ assert_contains "$WORKFLOW_FILE" 'push origin HEAD:${BADGE_BRANCH}'
|
||||
assert_contains "$WORKFLOW_FILE" 'BADGE_SOURCE_SHA: ${{ github.sha }}'
|
||||
assert_contains "$WORKFLOW_FILE" 'BADGE_LATEST_DIR="${BADGE_WORKTREE}/latest"'
|
||||
assert_contains "$WORKFLOW_FILE" 'BADGE_SHA_DIR="${BADGE_WORKTREE}/dev/${GITHUB_SHA}"'
|
||||
assert_contains "$WORKFLOW_FILE" "userfront-flutter-coverage:"
|
||||
assert_contains "$WORKFLOW_FILE" "adminfront-vitest-coverage:"
|
||||
assert_contains "$WORKFLOW_FILE" "devfront-vitest-coverage:"
|
||||
assert_contains "$WORKFLOW_FILE" "orgfront-vitest-coverage:"
|
||||
@@ -39,6 +40,8 @@ fi
|
||||
assert_contains "$WORKFLOW_FILE" "ADMINFRONT_COVERAGE_RESULT: \${{ needs['adminfront-vitest-coverage'].result }}"
|
||||
assert_contains "$WORKFLOW_FILE" "DEVFRONT_COVERAGE_RESULT: \${{ needs['devfront-vitest-coverage'].result }}"
|
||||
assert_contains "$WORKFLOW_FILE" "ORGFRONT_COVERAGE_RESULT: \${{ needs['orgfront-vitest-coverage'].result }}"
|
||||
assert_contains "$WORKFLOW_FILE" "USERFRONT_COVERAGE_RESULT: \${{ needs['userfront-flutter-coverage'].result }}"
|
||||
assert_contains "$WORKFLOW_FILE" "name: userfront-flutter-coverage-report"
|
||||
assert_contains "$WORKFLOW_FILE" "name: adminfront-vitest-coverage-report"
|
||||
assert_contains "$WORKFLOW_FILE" "name: devfront-vitest-coverage-report"
|
||||
assert_contains "$WORKFLOW_FILE" "name: orgfront-vitest-coverage-report"
|
||||
|
||||
65
test/summarize_userfront_coverage_test.sh
Normal file
65
test/summarize_userfront_coverage_test.sh
Normal file
@@ -0,0 +1,65 @@
|
||||
#!/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"
|
||||
@@ -6,6 +6,7 @@ WORK_DIR="$(mktemp -d)"
|
||||
trap 'rm -rf "$WORK_DIR"' EXIT
|
||||
|
||||
mkdir -p "$WORK_DIR/docs/badges"
|
||||
mkdir -p "$WORK_DIR/badge-artifacts/backend/reports"
|
||||
mkdir -p "$WORK_DIR/badge-artifacts/userfront/reports"
|
||||
mkdir -p "$WORK_DIR/badge-artifacts/adminfront/reports"
|
||||
mkdir -p "$WORK_DIR/badge-artifacts/orgfront/reports"
|
||||
@@ -47,7 +48,14 @@ cat > "$WORK_DIR/docs/badges/badges.json" <<'JSON'
|
||||
}
|
||||
JSON
|
||||
|
||||
cat > "$WORK_DIR/badge-artifacts/userfront/reports/vitest-coverage-summary.json" <<'JSON'
|
||||
cat > "$WORK_DIR/badge-artifacts/backend/reports/backend-coverage-summary.json" <<'JSON'
|
||||
{
|
||||
"package": "backend",
|
||||
"statements": 90.0
|
||||
}
|
||||
JSON
|
||||
|
||||
cat > "$WORK_DIR/badge-artifacts/userfront/reports/package-coverage-summary.json" <<'JSON'
|
||||
{
|
||||
"packages": [
|
||||
{
|
||||
@@ -86,6 +94,7 @@ run_badge_update() {
|
||||
LINT_RESULT=success \
|
||||
BIOME_RESULT=success \
|
||||
BACKEND_RESULT=success \
|
||||
BACKEND_COVERAGE_RESULT=success \
|
||||
USERFRONT_RESULT=success \
|
||||
USERFRONT_E2E_RESULT=success \
|
||||
USERFRONT_E2E_CHROMIUM_DESKTOP_RESULT=success \
|
||||
@@ -124,7 +133,7 @@ function assertEqual(actual, expected, message) {
|
||||
}
|
||||
|
||||
assertEqual(badges["backend-tests"].label, "backend", "backend badge label must be compact");
|
||||
assertEqual(badges["backend-tests"].message, "pass", "backend test badge must use backend job result");
|
||||
assertEqual(badges["backend-tests"].message, "pass | 90.00%", "backend badge must combine test result and coverage");
|
||||
assertEqual(badges.userfront.message, "pass | 85.40%", "userfront badge must combine fast E2E result and coverage");
|
||||
assertEqual(badges.adminfront.message, "pass | 82.34%", "adminfront badge must combine E2E result and coverage");
|
||||
assertEqual(badges.devfront.message, "pass | fail", "devfront badge must fail coverage independently");
|
||||
|
||||
Reference in New Issue
Block a user