Release v0.1.16
Module Package Release / publish-packages (push) Successful in 12s

This commit is contained in:
2026-08-05 19:53:46 +02:00
parent add7a99f6d
commit f1a5be2a93
35 changed files with 1467 additions and 195 deletions
+74 -1
View File
@@ -106,6 +106,7 @@ from govoplan_core.core.module_package_catalog import (
sign_module_package_catalog,
validate_module_package_catalog,
)
from govoplan_core.core.information_governance import ModuleInformationGovernance
from govoplan_core.core.modules import DocumentationTopic, FrontendModule, FrontendRoute, MigrationRetirementPlan, ModuleCompatibility, ModuleMigrationTask, ModuleMigrationTaskContext, ModuleMigrationTaskResult, ModuleUninstallGuardResult, PublicFrontendRoute
from govoplan_core.core.module_guards import drop_table_retirement_provider
from govoplan_core.core.modules import MigrationSpec, ModuleInterfaceProvider, ModuleInterfaceRequirement, ModuleManifest, PermissionDefinition, RoleTemplate
@@ -119,7 +120,8 @@ from govoplan_core.security.module_permissions import scopes_grant_compatible
from govoplan_core.security.permissions import scope_grants
from govoplan_core.server.app import create_app
from govoplan_core.server.config import GovoplanServerConfig
from govoplan_core.server.platform import create_platform_router
from govoplan_core.server.platform import _documentation_help_contexts, create_platform_router
from govoplan_core.core.views import ViewSurface
from govoplan_core.server.registry import available_module_manifests, build_platform_registry
from govoplan_core.server.route_validation import RouteCollisionError
from govoplan_core.tenancy.scope import Tenant, create_scope_tables
@@ -597,6 +599,70 @@ class ModuleSystemTests(unittest.TestCase):
[item["path"] for item in public_module["frontend"]["public_routes"]],
)
def test_declared_surfaces_receive_static_documentation_fallbacks(self) -> None:
manifest = ModuleManifest(
id="example",
name="Example",
version="test",
documentation=(
DocumentationTopic(
id="example.user",
title="Example user guide",
summary="User guide.",
documentation_types=("user",),
order=20,
),
DocumentationTopic(
id="example.admin",
title="Example administrator guide",
summary="Administrator guide.",
documentation_types=("admin",),
order=10,
),
),
frontend=FrontendModule(
module_id="example",
routes=(
FrontendRoute(
path="/example",
component="ExamplePage",
surface_id="example.workspace",
),
),
settings_routes=(
FrontendRoute(
path="/admin?section=example",
component="ExampleAdmin",
surface_id="example.admin.settings",
),
),
view_surfaces=(
ViewSurface(
id="example.workspace",
module_id="example",
kind="route",
label="Example workspace",
),
ViewSurface(
id="example.admin.settings",
module_id="example",
kind="section",
label="Example settings",
),
),
),
)
contexts = {
item["id"]: item for item in _documentation_help_contexts(manifest)
}
self.assertEqual("example.user", contexts["example.workspace"]["topic_id"])
self.assertEqual(
"example.admin",
contexts["example.admin.settings"]["topic_id"],
)
def test_registry_rejects_duplicate_public_frontend_routes(self) -> None:
registry = PlatformRegistry()
for module_id in ("first", "second"):
@@ -3300,6 +3366,7 @@ finally:
"recovery_notes": "Restore rehearsal completed for the release candidate.",
"provides_interfaces": [{"name": "files.spaces", "version": "1.2.0"}],
"requires_interfaces": [{"name": "access.directory", "version_min": "1.0.0", "optional": True}],
"information_governance": ModuleInformationGovernance().to_dict(),
"artifact_integrity": {
"python": {
"ref": "govoplan-files==0.1.4",
@@ -3345,6 +3412,12 @@ finally:
[{"name": "access.directory", "optional": True, "version_min": "1.0.0"}],
catalog[0]["requires_interfaces"],
)
self.assertEqual(
"contract_only",
catalog[0]["information_governance"]["dimensions"]["retention"][
"adoption"
],
)
self.assertEqual("0" * 64, catalog[0]["artifact_integrity"]["python"]["sha256"])
validation = validate_module_package_catalog(catalog_path)