test(release): isolate catalog contract projection
This commit is contained in:
@@ -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"])
|
||||||
|
|||||||
Reference in New Issue
Block a user