forked from baron/baron-sso
145 lines
4.5 KiB
Bash
145 lines
4.5 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/docs/badges"
|
|
mkdir -p "$WORK_DIR/badge-artifacts/userfront/reports"
|
|
mkdir -p "$WORK_DIR/badge-artifacts/adminfront/reports"
|
|
mkdir -p "$WORK_DIR/badge-artifacts/orgfront/reports"
|
|
|
|
cat > "$WORK_DIR/docs/badges/badges.json" <<'JSON'
|
|
{
|
|
"schemaVersion": 1,
|
|
"generatedBy": "scripts/update_code_check_badges.mjs",
|
|
"updatedAt": "2026-01-01T00:00:00.000Z",
|
|
"source": {
|
|
"branch": "dev",
|
|
"sha": "abc123456789",
|
|
"shortSha": "abc123456789",
|
|
"runId": "1",
|
|
"runNumber": "1"
|
|
},
|
|
"badges": {
|
|
"userfront": {
|
|
"label": "userfront",
|
|
"message": "unknown",
|
|
"color": "#6e7781"
|
|
},
|
|
"adminfront": {
|
|
"label": "adminfront",
|
|
"message": "10.00%",
|
|
"color": "#cf222e"
|
|
},
|
|
"devfront": {
|
|
"label": "devfront",
|
|
"message": "20.00%",
|
|
"color": "#cf222e"
|
|
},
|
|
"orgfront": {
|
|
"label": "orgfront",
|
|
"message": "30.00%",
|
|
"color": "#cf222e"
|
|
}
|
|
}
|
|
}
|
|
JSON
|
|
|
|
cat > "$WORK_DIR/badge-artifacts/userfront/reports/vitest-coverage-summary.json" <<'JSON'
|
|
{
|
|
"packages": [
|
|
{
|
|
"package": "userfront",
|
|
"statements": 85.4
|
|
}
|
|
]
|
|
}
|
|
JSON
|
|
|
|
cat > "$WORK_DIR/badge-artifacts/adminfront/reports/vitest-coverage-summary.json" <<'JSON'
|
|
{
|
|
"packages": [
|
|
{
|
|
"package": "adminfront",
|
|
"statements": 82.345
|
|
}
|
|
]
|
|
}
|
|
JSON
|
|
|
|
cat > "$WORK_DIR/badge-artifacts/orgfront/reports/vitest-coverage-summary.json" <<'JSON'
|
|
{
|
|
"packages": [
|
|
{
|
|
"package": "orgfront",
|
|
"statements": 36.1
|
|
}
|
|
]
|
|
}
|
|
JSON
|
|
|
|
run_badge_update() {
|
|
(
|
|
cd "$WORK_DIR"
|
|
LINT_RESULT=success \
|
|
BIOME_RESULT=success \
|
|
BACKEND_RESULT=success \
|
|
USERFRONT_RESULT=success \
|
|
USERFRONT_E2E_RESULT=success \
|
|
USERFRONT_E2E_CHROMIUM_DESKTOP_RESULT=success \
|
|
USERFRONT_E2E_CHROMIUM_MOBILE_RESULT=failure \
|
|
USERFRONT_E2E_FIREFOX_DESKTOP_RESULT=success \
|
|
USERFRONT_E2E_FIREFOX_MOBILE_RESULT=skipped \
|
|
USERFRONT_E2E_WEBKIT_DESKTOP_RESULT=failure \
|
|
USERFRONT_E2E_WEBKIT_MOBILE_RESULT=success \
|
|
ADMINFRONT_RESULT=success \
|
|
DEVFRONT_RESULT=success \
|
|
ORGFRONT_RESULT=success \
|
|
USERFRONT_COVERAGE_RESULT=success \
|
|
ADMINFRONT_COVERAGE_RESULT=success \
|
|
DEVFRONT_COVERAGE_RESULT=failure \
|
|
ORGFRONT_COVERAGE_RESULT=success \
|
|
BADGE_SOURCE_BRANCH=dev \
|
|
BADGE_SOURCE_SHA=abc123456789 \
|
|
GITHUB_RUN_ID=2 \
|
|
GITHUB_RUN_NUMBER=2 \
|
|
node "$ROOT_DIR/scripts/update_code_check_badges.mjs"
|
|
)
|
|
}
|
|
|
|
run_badge_update
|
|
|
|
node - "$WORK_DIR/docs/badges/badges.json" <<'NODE'
|
|
const fs = require("node:fs");
|
|
|
|
const manifest = JSON.parse(fs.readFileSync(process.argv[2], "utf8"));
|
|
const badges = manifest.badges;
|
|
|
|
function assertEqual(actual, expected, message) {
|
|
if (actual !== expected) {
|
|
throw new Error(`${message}: expected ${expected}, got ${actual}`);
|
|
}
|
|
}
|
|
|
|
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.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");
|
|
assertEqual(badges.orgfront.message, "pass | 36.10%", "orgfront badge must combine E2E result and coverage");
|
|
assertEqual(badges["userfront-chrome"].label, "chrome", "chromium full badge label must name the browser");
|
|
assertEqual(badges["userfront-chrome"].message, "pass | fail", "chromium full badge must show desktop and mobile results");
|
|
assertEqual(badges["userfront-firefox"].label, "firefox", "firefox full badge label must name the browser");
|
|
assertEqual(badges["userfront-firefox"].message, "pass | skip", "firefox full badge must show desktop and mobile results");
|
|
assertEqual(badges["userfront-safari"].label, "safari", "webkit full badge label must be shown as safari");
|
|
assertEqual(badges["userfront-safari"].message, "fail | pass", "webkit full badge must show desktop and mobile results");
|
|
NODE
|
|
|
|
cp "$WORK_DIR/docs/badges/badges.json" "$WORK_DIR/first-badges.json"
|
|
run_badge_update
|
|
cmp "$WORK_DIR/first-badges.json" "$WORK_DIR/docs/badges/badges.json"
|
|
|
|
echo "OK: package coverage badges update independently and avoid rerun churn"
|