Release govoplan-campaign v0.1.28: stabilize saving, review and delivery recovery
Module Package Release / publish-packages (push) Successful in 12s

This commit is contained in:
2026-09-08 01:32:26 +02:00
parent 1b32427813
commit c51fc180fb
111 changed files with 6905 additions and 980 deletions
+61
View File
@@ -0,0 +1,61 @@
from __future__ import annotations
import subprocess
import sys
import unittest
from pathlib import Path
_IMPORT_PROGRAM = """
import importlib
import socket
import sys
sys.path.insert(0, sys.argv[1])
def deny_network(*args, **kwargs):
raise AssertionError("Campaign imports must not connect to external services")
class NoNetworkSocket(socket.socket):
connect = deny_network
connect_ex = deny_network
socket.create_connection = deny_network
socket.socket = NoNetworkSocket
importlib.import_module(sys.argv[2])
from govoplan_campaign.backend.campaign import (
CampaignConfig, SemanticIssue, SemanticReport,
load_campaign_config, load_campaign_json, validate_campaign_config,
)
from govoplan_campaign.backend.attachments.resolver import resolve_campaign_attachments
assert all(callable(value) for value in (
CampaignConfig, SemanticIssue, SemanticReport,
load_campaign_config, load_campaign_json, validate_campaign_config,
resolve_campaign_attachments,
))
"""
class CampaignImportOrderTests(unittest.TestCase):
def test_model_validation_and_attachment_entry_points_import_independently(self):
source_root = Path(__file__).resolve().parents[1] / "src"
for first_module in (
"govoplan_campaign.backend.attachments.resolver",
"govoplan_campaign.backend.campaign.validation",
"govoplan_campaign.backend.campaign.entries",
):
with self.subTest(first_module=first_module):
completed = subprocess.run(
[sys.executable, "-I", "-c", _IMPORT_PROGRAM, str(source_root), first_module],
capture_output=True,
text=True,
check=False,
timeout=30,
)
self.assertEqual(0, completed.returncode, completed.stderr or completed.stdout)
if __name__ == "__main__":
unittest.main()