Some checks failed
tamq-ci / test (push) Failing after 6s
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a03397-4d51-7fd1-8ff2-946eb22ea2bc
60 lines
2 KiB
Python
60 lines
2 KiB
Python
from tamq.service import Service
|
|
from tamq.store import Store
|
|
|
|
|
|
class FakeControl:
|
|
instances = []
|
|
|
|
def __init__(self, session):
|
|
self.session = session
|
|
self.injected = []
|
|
self.__class__.instances.append(self)
|
|
|
|
def start(self):
|
|
return None
|
|
|
|
def session_exists(self, expected_pid=None):
|
|
return True
|
|
|
|
def inject(self, window, text):
|
|
self.injected.append((window, text))
|
|
|
|
def close(self):
|
|
return None
|
|
|
|
|
|
def test_service_delivery_injects_pending_messages(tmp_path, monkeypatch):
|
|
store = Store(tmp_path / "queue.sqlite3")
|
|
store.register_endpoint("tmux-amq-9-boot", 9, "tamq", ["repo-b"], "pane")
|
|
message_id = store.add("repo-a", "repo-b", "continue")
|
|
monkeypatch.setattr("tamq.service.ControlModeClient", FakeControl)
|
|
Service(store=store)._deliver_once()
|
|
assert FakeControl.instances[-1].injected == [("tamq:repo-b", "#repo-a: continue")]
|
|
assert store.list()[0]["message_id"] == message_id
|
|
assert store.list()[0]["state"] == "injected"
|
|
|
|
|
|
def test_service_never_injects_manual_endpoint_messages(tmp_path, monkeypatch):
|
|
store = Store(tmp_path / "queue.sqlite3")
|
|
store.register_endpoint("tmux-amq-9-boot", 9, "tamq", ["repo-b"], "manual")
|
|
store.add("repo-a", "repo-b", "continue")
|
|
monkeypatch.setattr("tamq.service.ControlModeClient", FakeControl)
|
|
|
|
Service(store=store)._deliver_once()
|
|
|
|
assert FakeControl.instances[-1].injected == []
|
|
assert store.list()[0]["state"] == "pending"
|
|
|
|
|
|
def test_service_disconnects_disappeared_tmux_endpoint(tmp_path, monkeypatch):
|
|
store = Store(tmp_path / "queue.sqlite3")
|
|
store.register_endpoint("tmux-amq-9-boot", 9, "tamq", ["repo-b"])
|
|
|
|
class MissingControl(FakeControl):
|
|
def session_exists(self, expected_pid=None):
|
|
assert expected_pid == 9
|
|
return False
|
|
|
|
monkeypatch.setattr("tamq.service.ControlModeClient", MissingControl)
|
|
Service(store=store)._deliver_once()
|
|
assert store.endpoints() == []
|