home · contact · privacy
Extend tests, especially for ISUPPORTs handling.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 13 Nov 2025 22:53:19 +0000 (23:53 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 13 Nov 2025 22:53:19 +0000 (23:53 +0100)
src/tests/_timeout_retries.test
src/tests/caps.test
src/tests/channels.test
src/tests/connect_disconnect_legalities.test
src/tests/isupports.test [new file with mode: 0644]
src/tests/lib/001-setting-nick [new file with mode: 0644]
src/tests/lib/join-empty [new file with mode: 0644]
src/tests/lib/usermode
src/tests/test.test
src/tests/tui_line_formattings.test

index 0a66c6e7ae6dc6778b6f8394671e5b27d573ac12..1f0e04bb7a12995263b6d39f329591b7cc6f2fd8 100644 (file)
@@ -1,3 +1,4 @@
+insert ./lib/001-setting-nick
 insert ./lib/attempting-to-connected
 insert ./lib/bazbarfoo
 # for: attempting-bazbarfoo, connect-bazbarfoo
@@ -60,6 +61,7 @@ insert attempting-to-connected : +1 6697 10000
 wait 2
 
 # same way ensure retry chain wasn't solely blocked by being connected
+insert 001-setting-nick
 insert usermode
 insert cmd-disconnect-0
 insert cmd-disconnect-1 :-1
index 13423d212d67ae0c4c04902d682d50d79a8775e7..1fe22a978cf73e7a953de4c2993b7023ae4b86ff 100644 (file)
@@ -1,3 +1,4 @@
+insert ./lib/001-setting-nick
 insert ./lib/attempting-to-connected
 insert ./lib/connect-to-connected
 insert ./lib/caps
@@ -9,6 +10,7 @@ insert ./lib/servermsglogged
 insert ./lib/usermode
 
 × disconnect-to-reconnect-0
+insert 001-setting-nick : +0
 insert usermode : +0
 insert cmd-disconnect-0 : +0
 insert cmd-disconnect-1 : +0
@@ -82,9 +84,8 @@ insert cap-msg : +0 ??? * LIST :sasl
 log 1 $ caps:sasl:enabled set to: [True]
 log 1 > CAP :END
 
-insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :Welcome to the foo.bar.baz network
-log 1 $ users:me:nick set to: [?]
-log 1 $ users:me:nick set to: [foo]
+# for later references, have nickname known
+insert 001-setting-nick
 
 # check NEW, DEL working after CAP :END
 insert cap-msg : +0 ??? foo NEW :foo bar=baz
index f8fbad45febd120a96003655288f485a9c206a78..cb700ff9302eb4d85305c25acf06e208828d08fe 100644 (file)
@@ -1,3 +1,4 @@
+insert ./lib/001-setting-nick
 insert ./lib/caps
 # for: caps-neg-empty
 insert ./lib/channels
@@ -8,16 +9,11 @@ insert ./lib/conn
 insert ./lib/connect-to-connected
 insert ./lib/disconnect
 # for: disconnect0, disconnect1
+insert ./lib/join-empty
 insert ./lib/retry-in
 insert ./lib/servermsglogged
 insert ./lib/usermode
 
-× join-empty
-insert servermsglogged : +0 MSG :foo.bar.baz 353 foo @ CHANNEL :foo
-log 1 $ channels:CHANNEL:exits cleared
-insert servermsglogged : +0 MSG :foo.bar.baz 366 foo CHANNEL :End of /NAMES list.
-log 1 $ channels:CHANNEL:user_ids set to: [me]
-
 × part-ch_test0
 insert part0 : +0 CHANNEL #ch_test0
 log 3 $ foo!~foobarbaz@baz.bar.foo parts
@@ -30,7 +26,7 @@ insert part1 : +1 CHANNEL #ch_test1
 
 × conn-init
 insert caps-neg-empty : +0
-insert usermode : +0 ~baz ~foobarbaz
+insert 001-setting-nick : +0
 
 × privmsg_ch_test0
 > /privmsg #ch_test0 TXT
@@ -42,16 +38,16 @@ log 3 > [foo] TXT
 insert attempting : +1
 insert connected : +1 WIN_IDS 2,3,4
 insert conn-init : +0
-# 001 actually triggers the auto-joins
-insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :Welcome to the foo.bar.baz network
-insert JOIN0 : +0 CHANNEL #ch_test0
+log 1 > JOIN :#ch_test0
+insert usermode : +0 ~baz ~foobarbaz
+insert servermsglogged : +0 MSG :foo!~foobarbaz@baz.bar.foo JOIN #ch_test0
 insert join-empty : +0 CHANNEL #ch_test0
-log 3 $ residents: foo
 
 × ×--------------------------
 
 insert connect-to-connected
 insert conn-init
+insert usermode : +0 ~baz ~foobarbaz
 
 # check inability to privmsg into channel not yet joined
 > /window 2
@@ -62,7 +58,6 @@ log 2 $ not sending, since not in channel
 > /join #ch_test0
 insert JOIN0 : +0 CHANNEL #ch_test0
 insert join-empty : +0 CHANNEL #ch_test0
-log 3 $ residents: foo
 
 # check privmsg into channel from other window only works by direct addressing
 > /window 2
@@ -90,7 +85,6 @@ log 3 $ not in that channel
 > /join
 insert JOIN0 : +0 CHANNEL #ch_test0
 insert join-empty : +0 CHANNEL #ch_test0
-log 3 $ residents: foo
 
 # check cannot /join channel already joined, neither from its window nor from elsewhere
 > /join
@@ -106,7 +100,7 @@ log 2 $ already in that channel
 insert part-ch_test0
 > /join #ch_test1
 insert JOIN0 : +0 CHANNEL #ch_test1
-insert join-empty : +0 CHANNEL #ch_test1
+insert join-empty :-1 +0 CHANNEL #ch_test1
 log 4 $ residents: foo
 
 # check /join into channel with other users, with multi-line 353, and @ rather than =
index 0695c0d6763c1ab80747b1cbfee55a433dbc5074..a412915a3f06675da6335bf9180311fb6ccce727 100644 (file)
@@ -1,3 +1,4 @@
+insert ./lib/001-setting-nick
 insert ./lib/attempting-to-connected
 insert ./lib/cmd-disconnect
 insert ./lib/conn
@@ -15,6 +16,7 @@ insert ./lib/usermode
 # to prepare, initiate connection
 insert connect
 insert attempting-to-connected
+insert 001-setting-nick
 insert usermode
 
 # fail to reconnect while connected
diff --git a/src/tests/isupports.test b/src/tests/isupports.test
new file mode 100644 (file)
index 0000000..b52e66a
--- /dev/null
@@ -0,0 +1,145 @@
+insert ./lib/001-setting-nick
+insert ./lib/caps
+# for: caps-neg-empty
+insert ./lib/cmd-disconnect
+insert ./lib/attempting-to-connected
+insert ./lib/connect-to-connected
+insert ./lib/disconnect
+insert ./lib/isupport-clear
+insert ./lib/join-empty
+insert ./lib/servermsglogged
+insert ./lib/usermode
+
+× un-default
+# CHANTYPES (with parameter parsing test: will = confuse it?):
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo CHANTYPES=123=456 :
+log 1 $ isupport:CHANTYPES set to: [123=456]
+# PREFIX (with parameter parsing test: will = confuse it?):
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo PREFIX=(ovE)@+= :
+log 1 $ isupport:PREFIX set to: [(ovE)@+=]
+# USERLEN:
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo USERLEN=8 :
+log 1 $ isupport:USERLEN set to: [8]
+
+× no-handler
+log 1 $ No handler implemented for: :?
+log 2,3,4,5 $ No handler implemented for: :?
+
+× ×-----------------------
+
+# ensure new connection opens with ISUPPORTs defaults
+# (via connect-to-connected:connect:isupport-clear)
+insert connect-to-connected
+insert caps-neg-empty
+#
+# prepare minimal further connection setup with user nickname known
+# (referenced by later 005s)
+insert 001-setting-nick
+
+# check setting of ISUPPORTs both with and without parameters, and last arg ignored
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo ABC=DEF GHI :are supported by this server
+log 1 $ isupport:ABC set to: [DEF]
+log 1 $ isupport:GHI set to: []
+
+# check further 005 not re-setting whole dict, and last arg possibly empty
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo MNO=PQR STU=VWX,YZ :
+log 1 $ isupport:MNO set to: [PQR]
+log 1 $ isupport:STU set to: [VWX,YZ]
+
+# check minus args clearing non-defaulty ISUPPORTs, and intermingling with positive args 
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo -GHI DEF=MNO -STU :ignore me
+log 1 $ isupport:GHI cleared
+log 1 $ isupport:DEF set to: [MNO]
+log 1 $ isupport:STU cleared
+
+# check setting and un-setting of defaulty ISUPPORTs
+insert un-default
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo -CHANTYPES -PREFIX -USERLEN :
+insert isupport-clear 1:
+
+# check disconnect on defaulty ISUPPORTs re-instates the respective defaults
+insert un-default
+insert usermode
+> /window 1
+insert cmd-disconnect-0
+insert cmd-disconnect-1 :-1
+insert disconnect1 1: +1 WIN_IDS 2
+
+# test effect of USERLEN
+
+> /reconnect
+insert attempting-to-connected
+insert caps-neg-empty : +0
+insert 001-setting-nick : +0
+insert usermode
+> /join #ch_test0
+log 1 > JOIN :#ch_test0
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo JOIN #ch_test0
+insert join-empty : +0 CHANNEL #ch_test0
+
+insert servermsglogged : +0 MSG :bar!foobarbazq@bar.bar JOIN :#ch_test0
+log 1 $ users:1:nick set to: [?]
+log 1 $ users:1:nick set to: [bar]
+log 1 $ users:1:user set to: [foobarbazq]
+log 1 $ users:1:host set to: [bar.bar]
+log 1 $ channels:#ch_test0:user_ids set to: [1], [me]
+log 3 $ bar!foobarbazq@bar.bar joins
+insert servermsglogged : +0 MSG :bar!~foobarbaz@bar.bar PRIVMSG #ch_test0 :hi
+log 1 $ users:1:user set to: [~foobarbaz]
+log 3 < [bar] hi
+
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo USERLEN=8 :
+log 1 $ isupport:USERLEN set to: [8]
+
+insert servermsglogged : +0 MSG :baz!foobarba@baz.baz JOIN :#ch_test0
+log 1 $ users:2:nick set to: [?]
+log 1 $ users:2:nick set to: [baz]
+log 1 $ users:2:user set to: [foobarba]
+log 1 $ users:2:host set to: [baz.baz]
+log 1 $ channels:#ch_test0:user_ids set to: [1], [2], [me]
+log 3 $ baz!foobarba@baz.baz joins
+insert servermsglogged : +0 MSG :baz!~foobarb@baz.baz PRIVMSG #ch_test0 :hi
+log 1 $ users:2:user set to: [~foobarb]
+log 3 < [baz] hi
+
+# test effect of PREFIX
+
+> /join #ch_test1
+log 1 > JOIN :#ch_test1
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo JOIN #ch_test1
+insert servermsglogged : +0 MSG :foo.bar.baz 353 foo @ #ch_test1 :foo @bar +baz =quux
+log 1 $ channels:#ch_test1:exits cleared
+log 1 $ users:3:nick set to: [?]
+log 1 $ users:3:nick set to: [=quux]
+insert servermsglogged : +0 MSG :foo.bar.baz 366 foo #ch_test1 :End of /NAMES list.
+log 1 $ channels:#ch_test1:user_ids set to: [1], [2], [3], [me]
+log 4 $ residents: bar, baz, =quux, foo
+
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo PREFIX=(vE)+= :
+log 1 $ isupport:PREFIX set to: [(vE)+=]
+
+> /join #ch_test2
+log 1 > JOIN :#ch_test2
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo JOIN #ch_test2
+insert servermsglogged : +0 MSG :foo.bar.baz 353 foo @ #ch_test2 :foo @bar +baz =quux
+log 1 $ channels:#ch_test2:exits cleared
+log 1 $ users:4:nick set to: [?]
+log 1 $ users:4:nick set to: [@bar]
+log 1 $ users:5:nick set to: [?]
+log 1 $ users:5:nick set to: [quux]
+insert servermsglogged : +0 MSG :foo.bar.baz 366 foo #ch_test2 :End of /NAMES list.
+log 1 $ channels:#ch_test2:user_ids set to: [2], [4], [5], [me]
+log 5 $ residents: baz, @bar, quux, foo
+
+# check effect of CHANTYPES
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo JOIN #ch_test3
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo JOIN &ch_test4
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo JOIN $ch_test5
+insert no-handler : +1 ? foo!~baz@baz.bar.foo JOIN $ch_test5
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo CHANTYPES=&$% :
+log 1 $ isupport:CHANTYPES set to: [&$%]
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo JOIN #ch_test6
+insert no-handler : +1 ? foo!~baz@baz.bar.foo JOIN #ch_test6
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo JOIN &ch_test7
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo JOIN $ch_test8
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo JOIN %ch_test8
diff --git a/src/tests/lib/001-setting-nick b/src/tests/lib/001-setting-nick
new file mode 100644 (file)
index 0000000..c011b2a
--- /dev/null
@@ -0,0 +1,6 @@
+insert ./lib/servermsglogged
+
+× 001-setting-nick
+insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :Welcome to the foo.bar.baz network
+log 1 $ users:me:nick set to: [?]
+log 1 $ users:me:nick set to: [foo]
diff --git a/src/tests/lib/join-empty b/src/tests/lib/join-empty
new file mode 100644 (file)
index 0000000..b9428c0
--- /dev/null
@@ -0,0 +1,8 @@
+insert ./lib/servermsglogged
+
+× join-empty
+insert servermsglogged : +0 MSG :foo.bar.baz 353 foo @ CHANNEL :foo
+log 1 $ channels:CHANNEL:exits cleared
+insert servermsglogged : +0 MSG :foo.bar.baz 366 foo CHANNEL :End of /NAMES list.
+log 1 $ channels:CHANNEL:user_ids set to: [me]
+log 3 $ residents: foo
index 65abf695fe59c22dab021c17e257be20b8592e5e..255d82e452fa04d4fc587f6e4f1556f1b1cee626 100644 (file)
@@ -2,8 +2,6 @@ insert ./lib/servermsglogged
 
 × usermode
 insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo MODE foo ABC
-log 1 $ users:me:nick set to: [?]
-log 1 $ users:me:nick set to: [foo]
 log 1 $ users:me:user set to: [~baz]
 log 1 $ users:me:host set to: [baz.bar.foo]
 log 1 $ users:me:modes set to: [ABC]
index 02faaca09f2fefd66832bbb0766cbc1320b40d24..15159c32c00cd3825fe75e643dee9cb70c97ad21 100644 (file)
@@ -73,13 +73,9 @@ insert servermsglogged : +0 MSG :foo.bar.baz 001 foo1 :Welcome to the foo.bar.ba
 insert servermsglogged : +0 MSG :foo.bar.baz 002 foo1 :Your host is foo.bar.baz
 insert servermsglogged : +0 MSG :foo.bar.baz 003 foo1 :This server was created Jan 1 2020
 insert servermsglogged : +0 MSG :foo.bar.baz 004 foo1 foo.bar.baz ircserver-1.0 abc def ghi
-insert servermsglogged : +0 MSG :foo.bar.baz 005 foo1 ABC=DEF GHI=JKL :are supported by this server
+insert servermsglogged : +0 MSG :foo.bar.baz 005 foo1 ABC=DEF GHI :are supported by this server
 log 1 $ isupport:ABC set to: [DEF]
-log 1 $ isupport:GHI set to: [JKL]
-insert servermsglogged : +0 MSG :foo.bar.baz 005 foo1 MNO=PQR STU=VWX Y=Z :are supported by this server
-log 1 $ isupport:MNO set to: [PQR]
-log 1 $ isupport:STU set to: [VWX]
-log 1 $ isupport:Y set to: [Z]
+log 1 $ isupport:GHI set to: []
 insert servermsglogged : +0 MSG :foo.bar.baz 251 foo1 :There are 10 users and 1000 invisible on 5 servers
 insert servermsglogged : +0 MSG :foo.bar.baz 252 foo1 7 :IRC Operators online
 insert servermsglogged : +0 MSG :foo.bar.baz 253 foo1 4 :unknown connection(s)
index 7948a16e0558b565c191242515e34afb3737b298..ac492c53effa4b513f048563d4bb65bbe4dda2a1 100644 (file)
@@ -1,3 +1,4 @@
+insert ./lib/001-setting-nick
 insert ./lib/connect-to-connected
 insert ./lib/servermsglogged
 insert ./lib/servernotice
@@ -9,47 +10,45 @@ line 21 on_black,bright_white < §§:§§:§§ XXX§§
 × ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
 
 insert connect-to-connected
+insert 001-setting-nick
 > /window 1
-insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :Welcome to the foo.bar.baz network
-log 1 $ users:me:nick set to: [?]
-log 1 $ users:me:nick set to: [foo]
 
 # check full line not wrapped
 insert servermsglogged-and-line-unwrapped : +0 XXX :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 12345678 0
 
 # check wrap if last space-separated item one char too long 
-insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 12345678 01
-line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 12345678§§
+insert servermsglogged : +0 MSG :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 12345678 01
+line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 12345678§§
 line 21 on_black,bright_white    01§§
 
 # check wrap if item starts right after width-final space
-insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 123456789 1
-line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 123456789§§
+insert servermsglogged : +0 MSG :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 123456789 1
+line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 123456789§§
 line 21 on_black,bright_white    1§§
 
 # check wrap if item starts right after space after item extending to end of width
-insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 1234567890 2
-line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 1234567890§§
+insert servermsglogged : +0 MSG :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567890 2
+line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567890§§
 line 21 on_black,bright_white    2§§
 
 # check wrap if item starts right after double-space after item extending to end of width
-insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 1234567890  3
-line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 1234567890§§
+insert servermsglogged : +0 MSG :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567890  3
+line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567890§§
 line 21 on_black,bright_white     3§§
 
 # check wrap on item too large to fit into screen width minus indent
-insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_2345678
-line 19 on_black,bright_white < §§:§§:§§ :foo.bar.baz 001 foo§§
+insert servermsglogged : +0 MSG :foo.bar.baz 002 foo :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_2345678
+line 19 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo§§
 line 20 on_black,bright_white    :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_234567§§
 line 21 on_black,bright_white   8
 
 # check wrapping calculation on double-width character (tbh not much of a test since the tester itself counts specifically this char as two, so it's pretty much the same as above testing with a sequence of two ASCII chars; mostly just ensures that the wrapping code relies on Terminal.length_to_term)
-insert servermsglogged-and-line-unwrapped : +0 XXX :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 1234567 💓
-insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 12345678 💓
-line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 001 foo :456789 123456789 123456789 123456789 12345678§§
+insert servermsglogged-and-line-unwrapped : +0 XXX :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567 💓
+insert servermsglogged : +0 MSG :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 12345678 💓
+line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 12345678§§
 line 21 on_black,bright_white    💓§§
-insert servermsglogged : +0 MSG :foo.bar.baz 001 foo :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_23456💓
-line 19 on_black,bright_white < §§:§§:§§ :foo.bar.baz 001 foo§§
+insert servermsglogged : +0 MSG :foo.bar.baz 002 foo :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_23456💓
+line 19 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo§§
 line 20 on_black,bright_white    :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_23456§§
 line 21 on_black,bright_white   💓§§