Files
yao-meta-skill/tests/verify_packager_failures.py

92 lines
2.6 KiB
Python

#!/usr/bin/env python3
import json
import subprocess
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
SCRIPT = ROOT / "scripts" / "cross_packager.py"
EXPECTATIONS = ROOT / "evals" / "packaging_expectations.json"
TMP = ROOT / "tests" / "tmp"
def run_case(name: str, cmd: list[str], expected_substring: str) -> dict:
proc = subprocess.run(cmd, cwd=ROOT, capture_output=True, text=True)
payload = {}
if proc.stdout.strip():
try:
payload = json.loads(proc.stdout)
except json.JSONDecodeError:
payload = {"raw_stdout": proc.stdout}
joined = proc.stdout + "\n" + proc.stderr
passed = proc.returncode == 2 and expected_substring in joined
return {
"name": name,
"passed": passed,
"returncode": proc.returncode,
"expected_substring": expected_substring,
"stdout": proc.stdout,
"stderr": proc.stderr,
"payload": payload,
}
def main() -> None:
TMP.mkdir(parents=True, exist_ok=True)
cases = [
run_case(
"missing_interface_field",
[
sys.executable,
str(SCRIPT),
str(ROOT / "tests" / "fixtures" / "package_missing_interface_field"),
"--platform",
"openai",
"--expectations",
str(EXPECTATIONS),
"--output-dir",
str(TMP / "missing_interface_field"),
],
"Missing required interface fields",
),
run_case(
"invalid_yaml",
[
sys.executable,
str(SCRIPT),
str(ROOT / "tests" / "fixtures" / "package_invalid_yaml"),
"--platform",
"openai",
"--expectations",
str(EXPECTATIONS),
"--output-dir",
str(TMP / "invalid_yaml"),
],
"while scanning a quoted scalar",
),
run_case(
"unsupported_platform",
[
sys.executable,
str(SCRIPT),
str(ROOT),
"--platform",
"bad_target",
"--expectations",
str(EXPECTATIONS),
"--output-dir",
str(TMP / "unsupported_platform"),
],
"Unsupported platform",
),
]
report = {"ok": all(case["passed"] for case in cases), "cases": cases}
print(json.dumps(report, ensure_ascii=False, indent=2))
if not report["ok"]:
raise SystemExit(2)
if __name__ == "__main__":
main()