home · contact · privacy
Add basic channel join testing, use str of incrementing int for user IDs to allow...
authorChristian Heller <c.heller@plomlompom.de>
Tue, 16 Sep 2025 00:55:48 +0000 (02:55 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Tue, 16 Sep 2025 00:55:48 +0000 (02:55 +0200)
ircplom/client.py
test.txt

index 58b48d52550e8ebad4dd8fc139193ebe5eb97e73..bf9d85359bdf4ce0d1dda886c481344fdc116067 100644 (file)
@@ -7,7 +7,6 @@ from enum import Enum, auto
 from getpass import getuser
 from typing import (Any, Callable, Collection, Generic, Iterable, Iterator,
                     Optional, Self, Set, TypeVar)
-from uuid import uuid4
 # ourselves
 from ircplom.events import AffectiveEvent, QueueMixin
 from ircplom.irc_conn import (
@@ -512,6 +511,10 @@ class _UpdatingUser(_UpdatingAttrsMixin, _User):
 
 class _UpdatingUsersDict(_UpdatingDict[_UpdatingUser]):
 
+    def __init__(self, **kwargs) -> None:
+        super().__init__(**kwargs)
+        self._top_id = 0
+
     def __getitem__(self, key: str) -> _UpdatingUser:
         user = super().__getitem__(key)
         user.id_ = key
@@ -549,7 +552,8 @@ class _UpdatingUsersDict(_UpdatingDict[_UpdatingUser]):
             else:
                 assert stored.host == nickuserhost.host
         elif create_if_none:
-            id_ = str(uuid4())
+            self._top_id += 1
+            id_ = str(self._top_id)
             self[id_].nickuserhost = nickuserhost
         else:
             return None
index bf85a8d2c32da3e410a1e6c85119c3dd4e399f5b..ed4e4b3b2d5573c1a1aa15cdfe8d4a0e29a0442d 100644 (file)
--- a/test.txt
+++ b/test.txt
 2 < :SaslServ!SaslServ@services.bar.baz NOTICE foo :Last login from ~plom@foo.bar.baz on Jan 1 22:00:00 2021 +0000.
 3 <<< [SaslServ] Last login from ~plom@foo.bar.baz on Jan 1 22:00:00 2021 +0000.
 
-> /disconnect
-0 !# invalid prompt command: /disconnect unknown
-
+> /join #test
+0 !# invalid prompt command: /join unknown
 > /list
 0 # windows available via /window:
 0 #   0) :start
 0 #   3) foo.bar.baz SaslServ
 > /window 1
 
+> /join #test
+2 > JOIN :#test
+2 < :foo!~plom@baz.bar.foo JOIN #test
+1,2 $ users:me:user set to: [~plom]
+2 < :foo.bar.baz 353 foo @ #test :foo @bar
+, $ ?!?@? renames ?
+, $ ?!?@? renames bar
+2 < :foo.bar.baz 366 foo #test :End of /NAMES list.
+4 $ residents: bar, foo
+2 < :bar!~bar@bar.bar PRIVMSG #test :hi there
+1,2 $ users:1:user set to: [~bar]
+1,2 $ users:1:host set to: [bar.bar]
+4 < [bar] hi there
+
 > /disconnect
 1,2 $ requesting disconnect …
 2 > QUIT :ircplom says bye
 2 < ERROR :Closing link: (plom@baz.bar.foo) [Quit: ircplom says bye]
-1,2,3 $ connection_state set to: [Closing link: (plom@baz.bar.foo) [Quit: ircplom says bye]]
-1,2,3 $ connection_state set to: []
+1,2,3,4 $ connection_state set to: [Closing link: (plom@baz.bar.foo) [Quit: ircplom says bye]]
+1,2,3,4 $ connection_state set to: []
 1,2 $ isupport cleared
 1,2 $ sasl_account set to: []
 1,2 $ sasl_auth_state set to: []
 1,2 $ users cleared
 
 > /reconnect
-1,2,3 $ connection_state set to: [connecting]
+1,2,3,4 $ connection_state set to: [connecting]
 
 # except for two positions marked with NB comment, exactly same as on 1st time
-1,2,3 $ ?!?@? renames ?
+1,2,3,4 $ ?!?@? renames ?
 1,2 $ users:me:user set to: [plom]
-1,2,3 $ connection_state set to: [connected]
+1,2,3,4 $ connection_state set to: [connected]
 1,2 $ caps cleared
 2 > CAP LS :302
 2 > USER plom 0 * :baz
 2 < AUTHENTICATE +
 2 > AUTHENTICATE :Zm9vAGZvbwBiYXI=
 2 < :foo.bar.baz 900 foo foo!plom@baz.bar.foo foo :You are now logged in as foo
-1,2,3 $ ?!plom@? renames foo
+1,2,3,4 $ ?!plom@? renames foo
 1,2 $ users:me:host set to: [baz.bar.foo]
 1,2 $ sasl_account set to: [foo]
 2 < :foo.bar.baz 903 foo :SASL authentication successful