Release v0.1.3
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import textwrap
|
||||
import tomllib
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from types import SimpleNamespace
|
||||
@@ -25,6 +27,13 @@ from govoplan_core.server.config import GovoplanServerConfig
|
||||
from govoplan_core.server.registry import available_module_manifests, build_platform_registry
|
||||
from govoplan_files.backend.storage.backends import LocalFilesystemStorageBackend, StorageBackendError
|
||||
|
||||
_MANIFEST_PROJECT_MODULES = {
|
||||
"access": "govoplan_core",
|
||||
"files": "govoplan_files",
|
||||
"mail": "govoplan_mail",
|
||||
"campaigns": "govoplan_campaign",
|
||||
}
|
||||
|
||||
|
||||
def _settings(root: Path) -> SimpleNamespace:
|
||||
return SimpleNamespace(
|
||||
@@ -73,12 +82,31 @@ class ModuleSystemTests(unittest.TestCase):
|
||||
)
|
||||
return create_app(config), settings
|
||||
|
||||
def _source_project_version(self, package_module: str) -> str:
|
||||
module = importlib.import_module(package_module)
|
||||
module_file = getattr(module, "__file__", None)
|
||||
if not module_file:
|
||||
self.fail(f"Could not locate source package for {package_module}")
|
||||
for path in Path(module_file).resolve().parents:
|
||||
pyproject_path = path / "pyproject.toml"
|
||||
if pyproject_path.exists():
|
||||
with pyproject_path.open("rb") as handle:
|
||||
return str(tomllib.load(handle)["project"]["version"])
|
||||
self.fail(f"Could not locate pyproject.toml for {package_module}")
|
||||
|
||||
def test_discovers_installed_core_and_product_module_manifests(self) -> None:
|
||||
manifests = available_module_manifests()
|
||||
self.assertTrue({"access", "files", "mail", "campaigns"}.issubset(manifests))
|
||||
self.assertEqual(manifests["campaigns"].dependencies, ("access",))
|
||||
self.assertEqual(manifests["campaigns"].optional_dependencies, ("files", "mail"))
|
||||
|
||||
def test_module_manifest_versions_match_source_project_versions(self) -> None:
|
||||
manifests = available_module_manifests()
|
||||
for manifest_id, package_module in _MANIFEST_PROJECT_MODULES.items():
|
||||
with self.subTest(manifest_id=manifest_id):
|
||||
self.assertIn(manifest_id, manifests)
|
||||
self.assertEqual(self._source_project_version(package_module), manifests[manifest_id].version)
|
||||
|
||||
def test_enabled_module_permutations_register_expected_routes(self) -> None:
|
||||
cases = (
|
||||
("core_only", (), {"access"}, set()),
|
||||
|
||||
Reference in New Issue
Block a user