ci(ananke): add package-level fallback for per-test metrics
This commit is contained in:
parent
861c7dacd3
commit
0919c56c61
@ -115,12 +115,16 @@ def _build_payload(
|
|||||||
f'ananke_quality_gate_checks_total{{suite="{suite}",check="{check_name}",result="{check_status}"}} 1'
|
f'ananke_quality_gate_checks_total{{suite="{suite}",check="{check_name}",result="{check_status}"}} 1'
|
||||||
for check_name, check_status in checks.items()
|
for check_name, check_status in checks.items()
|
||||||
)
|
)
|
||||||
|
lines.append("# TYPE platform_quality_gate_test_case_result gauge")
|
||||||
if test_cases:
|
if test_cases:
|
||||||
lines.append("# TYPE platform_quality_gate_test_case_result gauge")
|
|
||||||
lines.extend(
|
lines.extend(
|
||||||
f'platform_quality_gate_test_case_result{{suite="{suite}",test="{_escape_label(test_name)}",status="{_escape_label(test_status)}"}} 1'
|
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
|
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"
|
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()
|
cleaned = str(test_name).strip()
|
||||||
if cleaned:
|
if cleaned:
|
||||||
cases.append((cleaned, status))
|
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
|
return cases
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user