home · contact · privacy
Add IrcConnAbort test, allow unlogged server test puts.
authorChristian Heller <c.heller@plomlompom.de>
Sat, 20 Sep 2025 08:38:23 +0000 (10:38 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sat, 20 Sep 2025 08:38:23 +0000 (10:38 +0200)
ircplom/testing.py
test.txt

index befa3dc500091ef157c593aaa419d1bd8fb7800e..f8b20046b98f2c4d5207c03f20de81740aea330f 100644 (file)
@@ -5,7 +5,7 @@ from typing import Generator, Iterator, Optional
 from ircplom.events import Event, Loop, QueueMixin
 from ircplom.client import IrcConnection, IrcConnSetup
 from ircplom.client_tui import ClientKnowingTui, ClientTui
-from ircplom.irc_conn import IrcMessage
+from ircplom.irc_conn import IrcConnAbortException, IrcMessage
 from ircplom.tui_base import TerminalInterface, TuiEvent
 
 
@@ -78,6 +78,10 @@ class _FakeIrcConnection(IrcConnection):
             except QueueEmpty:
                 yield None
                 continue
+            if msg == 'FAKE_IRC_CONN_ABORT_EXCEPTION':
+                err = IrcConnAbortException(msg)
+                yield self._on_handled_loop_exception(err)
+                return
             yield self._make_recv_event(IrcMessage.from_raw(msg))
 
 
@@ -143,7 +147,10 @@ class TestingClientTui(ClientTui):
                 self._q_keypresses.put('KEY_ENTER')
                 continue
             if ':' in context and msg.startswith('< '):
-                client = self._clients[int(context.split(':')[0])]
+                client_id, win_ids = context.split(':')
+                client = self._clients[int(client_id)]
                 assert isinstance(client.conn, _FakeIrcConnection)
                 client.conn.put_server_msg(msg[2:])
+                if not win_ids:
+                    continue
             break
index 3f4f9c0944d341409ff24f70fc8c3c2352b1cd69..f515370a23bc58bfb220a466e4c86ff3ee8864a9 100644 (file)
--- a/test.txt
+++ b/test.txt
 8,9 $ isupport:USERLEN set to: [10]
 8,9 !$ nickname refused for bad format, giving up
 
+# test failing third connection
+> /connect baz.baz.baz baz baz:baz
+10,11 $ isupport cleared
+10,11 $ isupport:CHANTYPES set to: [#&]
+10,11 $ isupport:PREFIX set to: [(ov)@+]
+10,11 $ isupport:USERLEN set to: [10]
+10,11 $ hostname set to: [baz.baz.baz]
+10,11 $ port set to: [-1]
+10,11 $ nick_wanted set to: [baz]
+10,11 $ user_wanted set to: [baz]
+10,11 $ realname set to: [baz]
+10,11 $ port set to: [6697]
+10,11 $ connection_state set to: [connecting]
+10,11 $ connection_state set to: [connected]
+, $ CONNECTED
+2:11 > CAP LS :302
+2:11 > USER baz 0 * :baz
+2:11 > NICK :baz
+2: < FAKE_IRC_CONN_ABORT_EXCEPTION
+10,11 !$ connection broken: FAKE_IRC_CONN_ABORT_EXCEPTION
+10,11 $ connection_state set to: []
+, $ DISCONNECTED
+10,11 $ isupport cleared
+10,11 $ isupport:CHANTYPES set to: [#&]
+10,11 $ isupport:PREFIX set to: [(ov)@+]
+10,11 $ isupport:USERLEN set to: [10]
+
 # check that (save TUI tests assuming start on window 0, and no 4 yet) on reconnect, all the same effects can be expected
 > /reconnect
 repeat 63:65