Publish complete signed module catalogs
Dependency Audit / dependency-audit (push) Successful in 1m46s
Deployment Installer / deployment-installer (push) Successful in 5s
Security Audit / security-audit (push) Successful in 11m49s

This commit is contained in:
2026-08-06 21:13:33 +02:00
parent f3cfd1bccc
commit 09046e6e62
17 changed files with 666 additions and 394 deletions
+43
View File
@@ -46,6 +46,7 @@ class PackageRegistryReleaseTests(unittest.TestCase):
)
self.assertEqual("1", payload["schema_version"])
self.assertEqual("base", payload["profile"])
self.assertEqual("govoplan-core", payload["python"][0]["name"])
self.assertIn(
"@govoplan/core-webui",
@@ -55,6 +56,43 @@ class PackageRegistryReleaseTests(unittest.TestCase):
digest = unsigned.pop("package_set_sha256")
self.assertEqual(ARTIFACTS._canonical_sha256(unsigned), digest)
def test_full_profile_is_derived_from_the_developer_meta_package(self) -> None:
selected = PACKAGE_SET.parse_meta_package(
ROOT / "packages/govoplan-meta/pyproject.toml",
core_version="0.1.18",
)
by_name = {item["name"]: item for item in selected}
self.assertIn("govoplan-core", by_name)
self.assertIn("govoplan-records", by_name)
self.assertEqual("0.1.19", by_name["govoplan-tasks"]["version"])
payload = PACKAGE_SET.generate_package_set(
core_version="0.1.18",
requirements=ROOT / "requirements-release.txt",
workspace=ROOT.parent,
profile="full",
meta_package=ROOT / "packages/govoplan-meta/pyproject.toml",
)
self.assertEqual("full", payload["profile"])
self.assertEqual(len(selected), len(payload["python"]))
self.assertIn(
"@govoplan/records-webui",
{item["name"] for item in payload["webui"]},
)
def test_python_registry_artifact_url_is_immutable_and_credential_free(self) -> None:
url = ARTIFACTS._python_artifact_url(
"https://git.add-ideas.de/api/packages/GovOPlaN/pypi/simple",
package={"name": "govoplan-files", "version": "0.1.18"},
filename="govoplan_files-0.1.18-py3-none-any.whl",
)
self.assertEqual(
"https://git.add-ideas.de/api/packages/GovOPlaN/pypi/files/govoplan-files/0.1.18/govoplan_files-0.1.18-py3-none-any.whl",
url,
)
def test_wheel_and_webui_artifacts_are_verified_by_embedded_identity(self) -> None:
with tempfile.TemporaryDirectory(prefix="govoplan-package-artifacts-") as value:
root = Path(value)
@@ -138,6 +176,11 @@ class PackageRegistryReleaseTests(unittest.TestCase):
)
self.assertIn("resolve-package-artifacts.py", workflow)
self.assertIn("--profile full", workflow)
self.assertIn('git show "v$VERSION:requirements-release.txt"', workflow)
self.assertIn('git show "v$VERSION:packages/govoplan-meta/pyproject.toml"', workflow)
self.assertIn("--meta-package runtime-output/govoplan-meta.source.toml", workflow)
self.assertIn("GOVOPLAN_WEBUI_INSTALL_ALL_PACKAGES=true", workflow)
self.assertIn("package-artifacts.lock.json", workflow)
self.assertIn(
"--package-lock runtime-output/package-artifacts.lock.json",
+2 -2
View File
@@ -95,10 +95,10 @@ class ReleaseEntrypointGateTests(unittest.TestCase):
)
self.assertIn('cp "$WEBUI/package.release.json" "$TMP_DIR/package.json"', script)
def test_source_catalog_generator_enforces_explicit_repo_versions(self) -> None:
def test_catalog_generator_validates_registry_package_set_before_writing(self) -> None:
script = (META_ROOT / "tools" / "release" / "generate-release-catalog.py").read_text()
gate = script.index("selected_repository_version_issues(")
gate = script.index("_validate_release_inputs(package_set, package_lock")
write = script.index("output.write_text(")
self.assertLess(gate, write)