home · contact · privacy
Allow tests of multiple server connections.
authorChristian Heller <c.heller@plomlompom.de>
Sat, 20 Sep 2025 03:17:55 +0000 (05:17 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sat, 20 Sep 2025 03:17:55 +0000 (05:17 +0200)
ircplom/testing.py

index eddd5ff630e3d4c39eef38d88ac6eac25a9ff954..2f3a7bc16f88016a065d8f6f53d618890e849f4a 100644 (file)
@@ -87,10 +87,11 @@ class _TestClientKnowingTui(ClientKnowingTui):
 
 class TestingClientTui(ClientTui):
     'Collects keypresses via TestTerminal and test file, compares log results.'
-    _client: _TestClientKnowingTui
+    _clients: list[_TestClientKnowingTui]
 
     def __init__(self, **kwargs) -> None:
         super().__init__(**kwargs)
+        self._clients = []
         assert isinstance(self._term, TestTerminal)
         self._q_keypresses = self._term._q_keypresses
         with open(_PATH_TEST_TXT, 'r', encoding='utf8') as f:
@@ -99,9 +100,9 @@ class TestingClientTui(ClientTui):
         self._play_till_next_log()
 
     def _new_client(self, conn_setup: IrcConnSetup) -> _TestClientKnowingTui:
-        self._client = _TestClientKnowingTui(_q_out=self._q_out,
-                                             conn_setup=conn_setup)
-        return self._client
+        self._clients += [_TestClientKnowingTui(_q_out=self._q_out,
+                                                conn_setup=conn_setup)]
+        return self._clients[-1]
 
     def _log(self, msg: str, **kwargs) -> tuple[tuple[int, ...], str]:
         win_ids, logged_msg = super()._log(msg, **kwargs)
@@ -112,6 +113,8 @@ class TestingClientTui(ClientTui):
         assert time_str[2] == ':' and time_str[5] == ':'
         context, expected_msg = self._playbook[self._playbook_idx
                                                ].split(maxsplit=1)
+        if ':' in context:
+            _, context = context.split(':')
         expected_win_ids = tuple(int(idx) for idx in context.split(',') if idx)
         info = (self._playbook_idx,
                 expected_win_ids, win_ids,
@@ -140,7 +143,8 @@ class TestingClientTui(ClientTui):
                     self._q_keypresses.put(c)
                 self._q_keypresses.put('KEY_ENTER')
                 continue
-            if context == '2' and msg[:2] == '< ':
-                assert isinstance(self._client.conn, _FakeIrcConnection)
-                self._client.conn.put_server_msg(msg[2:])
+            if ':' in context and msg.startswith('< '):
+                client = self._clients[int(context.split(':')[0])]
+                assert isinstance(client.conn, _FakeIrcConnection)
+                client.conn.put_server_msg(msg[2:])
             break