test(release): isolate catalog contract projection

This commit is contained in:
2026-07-21 12:21:38 +02:00
parent 230ecf42b0
commit 248e3dc70e

View File

@@ -6,6 +6,7 @@ import base64
import json import json
import os import os
import re import re
import runpy
import shlex import shlex
import shutil import shutil
import stat import stat
@@ -3079,27 +3080,21 @@ finally:
self.assertEqual("stable", validation["channel"]) self.assertEqual("stable", validation["channel"])
def test_release_catalog_generator_reads_manifest_interface_contracts(self) -> None: def test_release_catalog_generator_reads_manifest_interface_contracts(self) -> None:
root = Path(tempfile.mkdtemp(prefix="govoplan-release-catalog-generator-", dir=_TEST_ROOT)) generator = runpy.run_path(
catalog_path = root / "catalog.json" str(Path(__file__).resolve().parents[2] / "govoplan" / "tools" / "release" / "generate-release-catalog.py"),
run_name="govoplan_release_catalog_contract_test",
result = subprocess.run( )
[ generated_at = generator["datetime"].now(tz=generator["UTC"])
sys.executable, catalog = generator["_catalog_payload"](
str(Path(__file__).resolve().parents[2] / "govoplan" / "tools" / "generate-release-catalog.py"), version="0.1.9",
"--version", tag="v0.1.9",
"0.1.7", channel="test",
"--catalog-output", sequence=1,
str(catalog_path), generated_at=generated_at,
], expires_at=generated_at + generator["timedelta"](days=1),
cwd=str(Path(__file__).resolve().parents[1]), repository_base="git+ssh://git@example.test/add-ideas",
env={**os.environ.copy(), "GOVOPLAN_CORE_ROOT": str(Path(__file__).resolve().parents[1])}, public_base_url="https://example.test",
text=True,
capture_output=True,
check=False,
) )
self.assertEqual(0, result.returncode, result.stderr)
catalog = json.loads(catalog_path.read_text(encoding="utf-8"))
modules = {item["module_id"]: item for item in catalog["modules"]} modules = {item["module_id"]: item for item in catalog["modules"]}
self.assertIn({"name": "files.campaign_attachments", "version": "0.1.6"}, modules["files"]["provides_interfaces"]) self.assertIn({"name": "files.campaign_attachments", "version": "0.1.6"}, modules["files"]["provides_interfaces"])