forked from baron/baron-sso
코드체크 결과 README에 뱃지로 추가
This commit is contained in:
@@ -30,13 +30,36 @@ 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" "adminfront-vitest-coverage:"
|
||||
assert_contains "$WORKFLOW_FILE" "devfront-vitest-coverage:"
|
||||
assert_contains "$WORKFLOW_FILE" "orgfront-vitest-coverage:"
|
||||
if grep -Eq "^[[:space:]]+front-vitest-coverage:$" "$WORKFLOW_FILE"; then
|
||||
fail "Code Check workflow must use package-specific Vitest coverage jobs"
|
||||
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" "name: adminfront-vitest-coverage-report"
|
||||
assert_contains "$WORKFLOW_FILE" "name: devfront-vitest-coverage-report"
|
||||
assert_contains "$WORKFLOW_FILE" "name: orgfront-vitest-coverage-report"
|
||||
if grep -Eq "^[[:space:]]+git push$" "$WORKFLOW_FILE"; then
|
||||
fail "Code Check workflow must not push back to the current branch"
|
||||
fi
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/code-check.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/dev-sha.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/userfront-e2e-full.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/adminfront-coverage.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/backend-tests.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/userfront.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/adminfront.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/devfront.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/orgfront.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/userfront-chrome.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/userfront-firefox.svg"
|
||||
assert_contains "$README_FILE" "https://gitea.hmac.kr/baron/baron-sso/raw/branch/badges/latest/userfront-safari.svg"
|
||||
assert_not_contains "$README_FILE" "userfront-coverage.svg"
|
||||
assert_not_contains "$README_FILE" "adminfront-coverage.svg"
|
||||
assert_not_contains "$README_FILE" "adminfront-e2e.svg"
|
||||
assert_not_contains "$README_FILE" "userfront-e2e-fast.svg"
|
||||
assert_not_contains "$README_FILE" "userfront-e2e-full.svg"
|
||||
assert_not_contains "$README_FILE" "](docs/badges/"
|
||||
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "cron: \"0 18 * * *\""
|
||||
@@ -44,7 +67,18 @@ assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "make code-check-lint"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "refs/remotes/origin/badges:dev/\${target_sha}/badges.json"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "full-result-exists:\${full_message}"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "USERFRONT_E2E_FULL: \"true\""
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "chromium-desktop"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "chromium-mobile-webapp"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "firefox-desktop"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "webkit-desktop"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "webkit-mobile-webapp"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "USERFRONT_E2E_CHROMIUM_DESKTOP_RESULT:"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "USERFRONT_E2E_CHROMIUM_MOBILE_RESULT:"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "USERFRONT_E2E_FIREFOX_DESKTOP_RESULT:"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "USERFRONT_E2E_FIREFOX_MOBILE_RESULT:"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "USERFRONT_E2E_WEBKIT_DESKTOP_RESULT:"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "USERFRONT_E2E_WEBKIT_MOBILE_RESULT:"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "BADGE_UPDATE_CODE_CHECK: \"false\""
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "npm test"
|
||||
assert_contains "$FULL_NIGHTLY_WORKFLOW_FILE" "npx playwright test"
|
||||
|
||||
echo "OK: Code Check badges are published to the badges branch"
|
||||
|
||||
144
test/update_code_check_badges_package_coverage_test.sh
Normal file
144
test/update_code_check_badges_package_coverage_test.sh
Normal file
@@ -0,0 +1,144 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user