mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-09 22:31:41 +00:00
A harness-only change (proxy_client.py, conftest.py, pytest.ini, the gateway config, .github/e2e-stack, or the workflow) selected nothing, so the stack was never exercised by the change that touched it. select_tests.py keeps the changed-file rule and adds the access_control suite whenever a harness file changes. The run step now reports the pytest exit code before the evidence check, prints pytest's summary line per pass so the rerun count is visible, and assert_tests_ran.py names each failed or errored test as classname::name
38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
import sys
|
|
import xml.etree.ElementTree as ET
|
|
from pathlib import Path
|
|
from typing import Final
|
|
|
|
|
|
def main() -> int:
|
|
selected: Final = tuple(sys.argv[2:])
|
|
try:
|
|
report: Final = ET.parse(Path(sys.argv[1])).getroot()
|
|
except (ET.ParseError, OSError):
|
|
_ = sys.stdout.write("::error::could not read the test execution report\n")
|
|
return 1
|
|
cases: Final = tuple(report.iter("testcase"))
|
|
passed: Final = frozenset(
|
|
case.get("file") for case in cases if all(case.find(tag) is None for tag in ("skipped", "failure", "error"))
|
|
)
|
|
missing: Final = tuple(path for path in selected if path not in passed)
|
|
for path in selected:
|
|
collected: Final = sum(case.get("file") == path for case in cases)
|
|
skipped: Final = sum(case.get("file") == path and case.find("skipped") is not None for case in cases)
|
|
_ = sys.stdout.write(f"{path}: {collected} collected, {skipped} skipped\n")
|
|
for case in cases:
|
|
if case.get("file") != path or all(case.find(tag) is None for tag in ("failure", "error")):
|
|
continue
|
|
_ = sys.stdout.write(f" failed: {case.get('classname', '')}::{case.get('name', '')}\n")
|
|
if (
|
|
selected
|
|
and not missing
|
|
and not any(case.find(tag) is not None for case in cases for tag in ("failure", "error"))
|
|
):
|
|
return 0
|
|
_ = sys.stdout.write("::error::every selected file must execute a passing test, with no failures or errors\n")
|
|
return 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|