Files
yao-meta-skill/tests/verify_upgrade_check.py
T
2026-06-13 20:15:50 +08:00

94 lines
3.1 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" / "upgrade_check.py"
PREVIOUS = ROOT / "registry" / "examples" / "yao-meta-skill-1.0.0.json"
def run(cmd: list[str]) -> dict:
proc = subprocess.run(cmd, cwd=ROOT, capture_output=True, text=True)
payload = {}
if proc.stdout.strip():
payload = json.loads(proc.stdout)
return {
"ok": proc.returncode == 0,
"returncode": proc.returncode,
"stdout": proc.stdout,
"stderr": proc.stderr,
"payload": payload,
}
def main() -> None:
tmp_root = ROOT / "tests" / "tmp_upgrade_check"
tmp_root.mkdir(parents=True, exist_ok=True)
output_json = tmp_root / "upgrade_check.json"
output_md = tmp_root / "upgrade_check.md"
result = run(
[
sys.executable,
str(SCRIPT),
str(ROOT),
"--previous-package-json",
str(PREVIOUS),
"--current-package-json",
str(ROOT / "reports" / "registry_audit.json"),
"--output-json",
str(output_json),
"--output-md",
str(output_md),
"--generated-at",
"2026-06-13",
]
)
payload = result["payload"]
assert result["ok"], result
assert payload["ok"], payload
assert payload["summary"]["declared_bump"] == "minor", payload
assert payload["summary"]["recommended_bump"] == "minor", payload
assert "agent-skills-compatible" in payload["upgrade_diff"]["added_targets"], payload
assert "vscode" in payload["upgrade_diff"]["added_targets"], payload
assert output_json.exists(), output_json
assert "Upgrade Check" in output_md.read_text(encoding="utf-8"), output_md
previous = json.loads(PREVIOUS.read_text(encoding="utf-8"))
current = json.loads((ROOT / "reports" / "registry_audit.json").read_text(encoding="utf-8"))["package"]
current["version"] = "1.1.0"
current["targets"] = ["openai", "claude"]
current["compatibility"] = {"openai": "pass", "claude": "fail"}
bad_current = tmp_root / "bad-current.json"
bad_current.write_text(json.dumps(current, ensure_ascii=False, indent=2), encoding="utf-8")
bad = run(
[
sys.executable,
str(SCRIPT),
str(ROOT),
"--previous-package-json",
str(PREVIOUS),
"--current-package-json",
str(bad_current),
"--output-json",
str(tmp_root / "bad.json"),
"--output-md",
str(tmp_root / "bad.md"),
"--generated-at",
"2026-06-13",
]
)
bad_payload = bad["payload"]
assert bad["returncode"] == 2, bad
assert not bad_payload["ok"], bad_payload
assert bad_payload["summary"]["recommended_bump"] == "major", bad_payload
assert any("Version bump is insufficient" in item for item in bad_payload["failures"]), bad_payload
print(json.dumps({"ok": True}, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()