integrations/_shared/test_swarm_adapter_contract.py

from future import annotations

import os import tempfile import unittest from unittest import mock

from integrations._shared import swarm_adapter_contract as contract

class SwarmAdapterContractTests(unittest.TestCase): def test_gateway_label_has_common_tokens(self) -> None: label = contract.build_label( contract.LabelConfig( runtime_name="hermes", env_prefix="HERMES", plugin_role="gateway", session_id="session-123", platform="telegram", identity="personal", ) )

    self.assertEqual(
        label,
        "identity:personal hermes platform:telegram mode:gateway role:planner origin:hermes session:session1",
    )

def test_override_label_gets_identity_and_session(self) -> None:
    label = contract.build_label(
        contract.LabelConfig(
            runtime_name="codex",
            env_prefix="CODEX",
            plugin_role="worker",
            session_id="abc-123",
            override_label="role:researcher topic:x",
            identity="work",
        )
    )

    self.assertEqual(label, "identity:work role:researcher topic:x session:abc123")

def test_apply_patch_paths_are_absolute_deduped_and_include_moves(self) -> None:
    patch = """*** Begin Patch

*** Update File: src/a.txt *** Move File: src/b.txt -> src/c.txt *** Update File: src/a.txt *** End Patch"""

    self.assertEqual(
        contract.apply_patch_paths(patch, os.getcwd),
        [
            os.path.abspath("src/a.txt"),
            os.path.abspath("src/b.txt"),
            os.path.abspath("src/c.txt"),
        ],
    )

def test_resolved_herdr_socket_path_reads_profile_env_file(self) -> None:
    with tempfile.TemporaryDirectory() as profile_dir:
        for profile, socket in (
            ("personal", "/run/herdr-personal.sock"),
            ("work", "/run/herdr-work.sock"),
        ):
            with open(os.path.join(profile_dir, f"{profile}.env"), "w") as handle:
                handle.write(f"HERDR_SOCKET_PATH={socket}

")

        with mock.patch.dict(
            os.environ,
            {"SWARM_MCP_PROFILE_DIR": profile_dir},
            clear=True,
        ):
            self.assertEqual(
                contract.resolved_herdr_socket_path("personal"),
                "/run/herdr-personal.sock",
            )
            self.assertEqual(
                contract.resolved_herdr_socket_path("work"),
                "/run/herdr-work.sock",
            )

def test_resolved_herdr_socket_path_honors_explicit_env(self) -> None:
    with mock.patch.dict(
        os.environ,
        {"HERDR_SOCKET_PATH": "/custom/herdr.sock"},
        clear=True,
    ):
        self.assertEqual(
            contract.resolved_herdr_socket_path("personal"),
            "/custom/herdr.sock",
        )

def test_resolved_herdr_socket_path_empty_when_no_profile_or_env(self) -> None:
    with tempfile.TemporaryDirectory() as profile_dir:
        with mock.patch.dict(
            os.environ,
            {"SWARM_MCP_PROFILE_DIR": profile_dir},
            clear=True,
        ):
            self.assertEqual(contract.resolved_herdr_socket_path("missing"), "")
            self.assertEqual(contract.resolved_herdr_socket_path(""), "")

if name == "main": unittest.main()