From: Christian Heller Date: Thu, 13 Nov 2025 22:53:19 +0000 (+0100) Subject: Extend tests, especially for ISUPPORTs handling. X-Git-Url: https://plomlompom.com/repos/templates?a=commitdiff_plain;h=faed5f92aa911bfc4caebf37e8a855aeb5f31a4f;p=ircplom Extend tests, especially for ISUPPORTs handling. --- diff --git a/src/tests/_timeout_retries.test b/src/tests/_timeout_retries.test index 0a66c6e..1f0e04b 100644 --- a/src/tests/_timeout_retries.test +++ b/src/tests/_timeout_retries.test @@ -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 diff --git a/src/tests/caps.test b/src/tests/caps.test index 13423d2..1fe22a9 100644 --- a/src/tests/caps.test +++ b/src/tests/caps.test @@ -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 diff --git a/src/tests/channels.test b/src/tests/channels.test index f8fbad4..cb700ff 100644 --- a/src/tests/channels.test +++ b/src/tests/channels.test @@ -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 = diff --git a/src/tests/connect_disconnect_legalities.test b/src/tests/connect_disconnect_legalities.test index 0695c0d..a412915 100644 --- a/src/tests/connect_disconnect_legalities.test +++ b/src/tests/connect_disconnect_legalities.test @@ -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 index 0000000..b52e66a --- /dev/null +++ b/src/tests/isupports.test @@ -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 index 0000000..c011b2a --- /dev/null +++ b/src/tests/lib/001-setting-nick @@ -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 index 0000000..b9428c0 --- /dev/null +++ b/src/tests/lib/join-empty @@ -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 diff --git a/src/tests/lib/usermode b/src/tests/lib/usermode index 65abf69..255d82e 100644 --- a/src/tests/lib/usermode +++ b/src/tests/lib/usermode @@ -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] diff --git a/src/tests/test.test b/src/tests/test.test index 02faaca..15159c3 100644 --- a/src/tests/test.test +++ b/src/tests/test.test @@ -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) diff --git a/src/tests/tui_line_formattings.test b/src/tests/tui_line_formattings.test index 7948a16..ac492c5 100644 --- a/src/tests/tui_line_formattings.test +++ b/src/tests/tui_line_formattings.test @@ -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 💓§§