ci(ananke): add package-level fallback for per-test metrics

This commit is contained in:
codex 2026-04-20 09:07:52 -03:00
parent 861c7dacd3
commit 0919c56c61

View File

@ -115,12 +115,16 @@ def _build_payload(
f'ananke_quality_gate_checks_total{{suite="{suite}",check="{check_name}",result="{check_status}"}} 1'
for check_name, check_status in checks.items()
)
lines.append("# TYPE platform_quality_gate_test_case_result gauge")
if test_cases:
lines.append("# TYPE platform_quality_gate_test_case_result gauge")
lines.extend(
f'platform_quality_gate_test_case_result{{suite="{suite}",test="{_escape_label(test_name)}",status="{_escape_label(test_status)}"}} 1'
for test_name, test_status in test_cases
)
else:
lines.append(
f'platform_quality_gate_test_case_result{{suite="{suite}",test="__no_test_cases__",status="skipped"}} 1'
)
return "\n".join(lines) + "\n"
@ -182,6 +186,22 @@ def _parse_go_test_cases(output_path: Path) -> list[tuple[str, str]]:
cleaned = str(test_name).strip()
if cleaned:
cases.append((cleaned, status))
if cases:
return cases
# Fallback for non-verbose `go test` output where individual test names are absent.
package_cases: list[tuple[str, str]] = []
for package_name in re.findall(r"^ok\s+([^\s]+)", text, flags=re.M):
cleaned = str(package_name).strip()
if cleaned:
package_cases.append((f"package::{cleaned}", "passed"))
for package_name in re.findall(r"^FAIL\s+([^\s]+)", text, flags=re.M):
cleaned = str(package_name).strip()
if cleaned:
package_cases.append((f"package::{cleaned}", "failed"))
if package_cases:
deduped = list(dict.fromkeys(package_cases))
return deduped
return cases