From b74c5b6ca3db18210d2053d9c970904291701268 Mon Sep 17 00:00:00 2001 From: codex Date: Mon, 20 Apr 2026 13:51:33 -0300 Subject: [PATCH] quality(soteria): always emit coverage summary even on earlier gate failures --- scripts/check.sh | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/scripts/check.sh b/scripts/check.sh index 7c78d55..a1e75c0 100644 --- a/scripts/check.sh +++ b/scripts/check.sh @@ -6,6 +6,7 @@ BUILD_DIR="${ROOT_DIR}/build" mkdir -p "${BUILD_DIR}" cd "${ROOT_DIR}" +overall_rc=0 echo "[quality] gofmt" mapfile -t go_files < <(find cmd internal -type f -name '*.go' ! -name '*_test.go' ! -path '*/ui-dist/*' | sort) @@ -14,49 +15,67 @@ if ((${#go_files[@]})); then if [[ -n "${gofmt_diff}" ]]; then echo "gofmt check failed. Run: gofmt -w " echo "${gofmt_diff}" - exit 1 + overall_rc=1 fi fi echo "[quality] structure hygiene" -python3 "${ROOT_DIR}/scripts/structure_hygiene_check.py" --root "${ROOT_DIR}" +if ! python3 "${ROOT_DIR}/scripts/structure_hygiene_check.py" --root "${ROOT_DIR}"; then + overall_rc=1 +fi echo "[quality] doc hygiene" printf 'failed\n' > "${BUILD_DIR}/docs-naming.status" -python3 "${ROOT_DIR}/scripts/doc_hygiene_check.py" \ +if python3 "${ROOT_DIR}/scripts/doc_hygiene_check.py" \ --root "${ROOT_DIR}" \ - --waivers "${ROOT_DIR}/scripts/doc_hygiene_waivers.tsv" -printf 'ok\n' > "${BUILD_DIR}/docs-naming.status" + --waivers "${ROOT_DIR}/scripts/doc_hygiene_waivers.tsv"; then + printf 'ok\n' > "${BUILD_DIR}/docs-naming.status" +else + overall_rc=1 +fi echo "[quality] LOC hygiene" -python3 "${ROOT_DIR}/scripts/loc_hygiene_check.py" \ +if ! python3 "${ROOT_DIR}/scripts/loc_hygiene_check.py" \ --root "${ROOT_DIR}" \ --max-lines 500 \ --waivers "${ROOT_DIR}/scripts/loc_hygiene_waivers.tsv" \ - --summary-json "${BUILD_DIR}/loc-summary.json" + --summary-json "${BUILD_DIR}/loc-summary.json"; then + overall_rc=1 +fi echo "[quality] code smell" -bash "${ROOT_DIR}/scripts/code_smell_check.sh" +if ! bash "${ROOT_DIR}/scripts/code_smell_check.sh"; then + overall_rc=1 +fi echo "[quality] ui test framework policy" -python3 "${ROOT_DIR}/scripts/ui_test_framework_check.py" --root "${ROOT_DIR}" +if ! python3 "${ROOT_DIR}/scripts/ui_test_framework_check.py" --root "${ROOT_DIR}"; then + overall_rc=1 +fi echo "[quality] go vet" -go vet ./... +if ! go vet ./...; then + overall_rc=1 +fi echo "[quality] unit tests + coverage" set +e go test -json -coverprofile="${BUILD_DIR}/coverage.out" ./... > "${BUILD_DIR}/go-test.json" test_rc=$? set -e +if [ "${test_rc}" -ne 0 ]; then + overall_rc=1 +fi echo "[quality] coverage hygiene" -python3 "${ROOT_DIR}/scripts/coverage_hygiene_check.py" \ +if ! python3 "${ROOT_DIR}/scripts/coverage_hygiene_check.py" \ --root "${ROOT_DIR}" \ --coverprofile "${BUILD_DIR}/coverage.out" \ --min-total 39.5 \ --baseline "${ROOT_DIR}/scripts/coverage_hygiene_baseline.tsv" \ - --summary-json "${BUILD_DIR}/coverage-summary.json" + --summary-json "${BUILD_DIR}/coverage-summary.json"; then + overall_rc=1 +fi python3 - <<'PY' import json @@ -79,4 +98,4 @@ if cov_path.exists(): (build / "quality-summary.json").write_text(json.dumps(summary, indent=2), encoding="utf-8") PY -exit "${test_rc}" +exit "${overall_rc}"