← Files SocialBuARCHIVED FILE

scripts/test_release.py

1.72 KB · Nov 3, 2026 · 18:53 UTC

↓ Download file

#!/usr/bin/env python3
"""Check release guards and exercise the workflow's actual Registry predicates."""

import copy
import json
import re
import subprocess
from pathlib import Path

root = Path(__file__).resolve().parents[1]
workflow = (root / ".github/workflows/release.yml").read_text(encoding="utf-8")
assert "environment: mcp-registry-publish" in workflow
assert "format('refs/tags/{0}', inputs.tag)" in workflow
assert "ref: refs/tags/${{ env.RELEASE_TAG }}" in workflow
assert 'gh release create "$RELEASE_TAG" "$archive" --verify-tag' in workflow

server = json.loads((root / "server.json").read_text(encoding="utf-8"))
record = {"server": server, "_meta": {"io.modelcontextprotocol.registry/official": {"status": "active"}}}
predicates = re.findall(r"jq -e --slurpfile expected server.json(?: \\\n)?\s*'([^']+)'", workflow)
assert len(predicates) == 2

for predicate in predicates:
    def accepts(value: dict) -> bool:
        result = subprocess.run(
            ["jq", "-e", "--slurpfile", "expected", str(root / "server.json"), predicate],
            input=json.dumps(value), text=True, capture_output=True, check=False,
        )
        assert result.returncode in (0, 1), result.stderr
        return result.returncode == 0

    assert accepts(record)
    wrong_remote = copy.deepcopy(record)
    wrong_remote["server"]["remotes"][0]["url"] = "https://example.com/mcp"
    assert not accepts(wrong_remote)
    assert not accepts({"server": {"version": server["version"]}})
    if "status" in predicate:
        deleted = copy.deepcopy(record)
        deleted["_meta"]["io.modelcontextprotocol.registry/official"]["status"] = "deleted"
        assert not accepts(deleted)

print("Release guards passed.")

SHA-256: 528d871307c56b92eb964d8158ebce14089aeee2548aa26a0d8bcbfc1c473916