home · contact · privacy
Refactor tests, fix some minor holes.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 12 Nov 2025 08:30:19 +0000 (09:30 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 12 Nov 2025 08:30:19 +0000 (09:30 +0100)
15 files changed:
src/tests/_timeout_retries.test
src/tests/caps.test
src/tests/channels.test
src/tests/connect_disconnect_legalities.test
src/tests/error_disconnects.test
src/tests/lib/channels [new file with mode: 0644]
src/tests/lib/cmd-disconnect
src/tests/lib/conn-error [deleted file]
src/tests/lib/error-to-disconnect
src/tests/lib/error-to-disconnected [new file with mode: 0644]
src/tests/lib/pingpong [new file with mode: 0644]
src/tests/lib/usermode [new file with mode: 0644]
src/tests/pingpong.test
src/tests/test.test
src/tests/tui_draw.test

index 6cb30a31add4f88f4cfb9171d4bbea3a7e86e830..0a66c6e7ae6dc6778b6f8394671e5b27d573ac12 100644 (file)
@@ -4,14 +4,23 @@ insert ./lib/bazbarfoo
 insert ./lib/conn
 # for: attempting, connect, connected
 insert ./lib/cmd-disconnect
+insert ./lib/disconnect
+# for: disconnect1
 insert ./lib/enter-list-start
 insert ./lib/no-timely-pong
 insert ./lib/retry-in
+insert ./lib/usermode
 
 × fake-testing-timeout
 log 1 $ connection_state set to: [failed to connect: FAKE TESTING TIMEOUT]
 insert retry-in : +1 ? §§
 
+× attempting-to-connected-plus-timeout
+insert attempting-to-connected : +1 6697 10000
+servermsg 0 timeout
+log 1 > PING :what's up?
+insert no-timely-pong
+
 × ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
 
 # NB: FakeIrcConnection on any port > 10000 will fail connecting with a timeout
@@ -32,33 +41,27 @@ insert attempting : +1 6697 10001
 log 1 $ port set to: [10000]
 insert fake-testing-timeout : +1 §§ 4
 
-# check connecting works with TestingClient port finally reduced to 10000
-insert attempting-to-connected : +1 6697 10000
-
-# check retry chain also started by in-connection timeout
-servermsg 0 timeout
-log 1 > PING :what's up?
-insert no-timely-pong
+# check connecting works with TestingClient port finally reduced to 10000,
+# and retry chain also started by in-connection timeout
+insert attempting-to-connected-plus-timeout
 
 # check /disconnect aborts retry chain
 > /window 1
 > /disconnect
 log 1 $ already disconnected, stopped connecting attempts
-wait 1
+wait 2
 
-# connect to second server to check timed auto-retries don't activate after manual intervention
-insert connect-bazbarfoo : +3 6697 10001
-insert attempting-bazbarfoo : +3 6697 10001
-log 3 $ port set to: [10000]
-insert fake-testing-timeout : +3 §§ 1
-
-# during retry-wait /reconnect, then wait announced duration to check nothing else happens
-> /window 3
+# to check timed auto-retries don't activate after manual intervention:
+# during retry-wait /reconnect, then wait beyond announced duration
+> /reconnect
+insert attempting-to-connected-plus-timeout
 > /reconnect
-insert attempting-bazbarfoo : +3 6697 10000
-insert connected : +3 WIN_IDS 2
-wait 1
+insert attempting-to-connected : +1 6697 10000
+wait 2
 
 # same way ensure retry chain wasn't solely blocked by being connected
-insert cmd-disconnect : +3
-wait 1
+insert usermode
+insert cmd-disconnect-0
+insert cmd-disconnect-1 :-1
+insert disconnect1 1: +1 WIN_IDS 2
+wait 2
index 70c84efe55660c4d6d44ae1314c0062a9bddee3c..13423d212d67ae0c4c04902d682d50d79a8775e7 100644 (file)
@@ -5,21 +5,22 @@ insert ./lib/caps
 insert ./lib/cmd-disconnect
 insert ./lib/disconnect
 # for: disconnect1
-insert ./lib/error-to-disconnect
 insert ./lib/servermsglogged
+insert ./lib/usermode
 
-× disconnect-init
-insert cmd-disconnect : +1
-insert error-to-disconnect : +0 ? Closing link: ircplom says bye
+× disconnect-to-reconnect-0
+insert usermode : +0
+insert cmd-disconnect-0 : +0
+insert cmd-disconnect-1 : +0
 
-× later-disconnect-to-reconnect
-insert disconnect1 1:-1 +1 WIN_IDS 2
+× disconnect-to-reconnect-1
+insert disconnect1 1: +1 WIN_IDS 2
 > /reconnect
 insert attempting-to-connected : +1
 
-× disconnect-to-reconnect-clear-caps
-insert disconnect-init
-insert later-disconnect-to-reconnect
+× disconnect-to-reconnect
+insert disconnect-to-reconnect-0
+insert disconnect-to-reconnect-1
 
 × ×--------------------------
 
@@ -29,8 +30,8 @@ insert connect-to-connected
 insert caps-neg-empty
 
 > /window 2
-insert disconnect-init :-1
-insert later-disconnect-to-reconnect
+insert disconnect-to-reconnect-0 :-1
+insert disconnect-to-reconnect-1
 
 # check full, alphabetical processing of multi-line responses
 insert cap-msg : +0 ??? * LS * :foo bar baz 
@@ -55,7 +56,7 @@ log 1 $ caps:rba:enabled set to: [True]
 log 1 $ caps:zab:enabled set to: [True]
 log 1 > CAP :END
 
-insert disconnect-to-reconnect-clear-caps
+insert disconnect-to-reconnect
 
 # check REQ for "sasl" (even if no PLAIN), denied
 insert servermsglogged : +0 MSG :*.?.net CAP * LS :foo bar sasl
@@ -68,7 +69,7 @@ insert cap-msg : +0 ??? * NAK :sasl
 insert cap-msg : +0 ??? * LIST :
 log 1 > CAP :END
 
-insert disconnect-to-reconnect-clear-caps
+insert disconnect-to-reconnect
 
 # check REQ for "sasl" with PLAIN successful (but for lack of password, negotiation still ending instantly)
 insert cap-msg : +0 ??? * LS :sasl=PLAIN
index c5c90c05acbfd759ceb97c7785a461a20cac6288..ff8670d597798445775e5dc6808e2d37f26ec2ca 100644 (file)
@@ -1,22 +1,16 @@
 insert ./lib/caps
 # for: caps-neg-empty
+insert ./lib/channels
+# for: cmd-nick, JOIN0, join-w-topic, part0, part1, topics-test
 insert ./lib/cmd-disconnect
 insert ./lib/conn
 # for: attempting, connected
 insert ./lib/connect-to-connected
 insert ./lib/disconnect
 # for: disconnect0, disconnect1
-insert ./lib/error-to-disconnect
+insert ./lib/retry-in
 insert ./lib/servermsglogged
-
-× JOIN0
-log 1 > JOIN :CHANNEL
-insert servermsglogged : +0 MSG :foo!~foobarbaz@baz.bar.foo JOIN CHANNEL
-
-× identifying-join-ch_test0
-insert JOIN0 : +0 CHANNEL #ch_test0
-log 1 $ users:me:user set to: [~foobarbaz]
-log 1 $ users:me:host set to: [baz.bar.foo]
+insert ./lib/usermode
 
 × join-empty
 insert servermsglogged : +0 MSG :foo.bar.baz 353 foo @ CHANNEL :foo
@@ -24,17 +18,6 @@ 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]
 
-× part0
-> /part
-log 1 > PART :CHANNEL
-insert servermsglogged : +0 MSG :foo!~foobarbaz@baz.bar.foo PART :CHANNEL
-log 1 $ channels:CHANNEL:exits:me set to: [P]
-log 1 $ channels:CHANNEL:user_ids cleared
-
-× part1
-log 1 $ channels:CHANNEL:exits:me cleared
-log 1 $ channels:CHANNEL cleared
-
 × part-ch_test0
 insert part0 : +0 CHANNEL #ch_test0
 log 3 $ foo!~foobarbaz@baz.bar.foo parts
@@ -46,10 +29,8 @@ log 4 $ foo!~foobarbaz@baz.bar.foo parts
 insert part1 : +1 CHANNEL #ch_test1
 
 × conn-init
-insert caps-neg-empty
-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]
+insert caps-neg-empty : +0
+insert usermode : +0 ~baz ~foobarbaz
 
 × privmsg_ch_test0
 > /privmsg #ch_test0 TXT
@@ -60,15 +41,13 @@ log 3 > [foo] TXT
 > /reconnect
 insert attempting : +1
 insert connected : +1 WIN_IDS 2,3,4
-insert conn-init
-insert identifying-join-ch_test0
+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
 insert join-empty : +0 CHANNEL #ch_test0
 log 3 $ residents: foo
 
-× cmd_nick
-> /nick ?
-log 1 > NICK :?
-
 × ×--------------------------
 
 insert connect-to-connected
@@ -81,7 +60,7 @@ log 2 $ not sending, since not in channel
 
 # check join with minimum context (no topic, no other users etc.)
 > /join #ch_test0
-insert identifying-join-ch_test0
+insert JOIN0 : +0 CHANNEL #ch_test0
 insert join-empty : +0 CHANNEL #ch_test0
 log 3 $ residents: foo
 
@@ -153,13 +132,7 @@ log 3 $ residents: bar, baz, oof, rab, zab, foo
 # check /join into channel with topic set
 > /window 4
 insert part-ch_test1
-> /join
-insert JOIN0 : +0 CHANNEL #ch_test1
-insert servermsglogged : +0 MSG :foo.bar.baz 332 foo #ch_test1 :foo bar baz
-log 1 $ channels:#ch_test1:exits cleared
-insert servermsglogged : +0 MSG :foo.bar.baz 333 foo #ch_test1 bar!~bar@OLD.bar.bar 1234567890
-log 1 $ channels:#ch_test1:topic set to: [Topic(what='foo bar baz', who=NickUserHost(nick='bar', user='~bar', host='OLD.bar.bar'))]
-log 4 $ bar!~bar@OLD.bar.bar set topic: foo bar baz
+insert join-w-topic : +0 CHANNAME #ch_test1
 insert servermsglogged : +0 MSG :foo.bar.baz 353 foo @ #ch_test1 :foo bar
 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], [me]
@@ -169,14 +142,9 @@ log 4 $ residents: bar, foo
 insert servermsglogged : +0 MSG :bar!~bar@bar.bar TOPIC #ch_test1 :foo bar baz
 log 1 $ users:1:user set to: [~bar]
 log 1 $ users:1:host set to: [bar.bar]
-log 1 $ channels:#ch_test1:topic set to: [Topic(what='foo bar baz', who=NickUserHost(nick='bar', user='~bar', host='bar.bar'))]
 
 # … is echoed into channel window _if_ either content or setter change
-log 4 $ bar!~bar@bar.bar set topic: foo bar baz
-insert servermsglogged : +0 MSG :bar!~bar@bar.bar TOPIC #ch_test1 :foo bar baz
-insert servermsglogged : +0 MSG :bar!~bar@bar.bar TOPIC #ch_test1 :foo foo baz
-log 1 $ channels:#ch_test1:topic set to: [Topic(what='foo foo baz', who=NickUserHost(nick='bar', user='~bar', host='bar.bar'))]
-log 4 $ bar!~bar@bar.bar set topic: foo foo baz
+insert topics-test : +0 CHANNAME #ch_test1
 
 # check effects of other users' messages (PRIVMSG and NOTICE)
 insert servermsglogged : +0 MSG :bar!~bar@bar.bar PRIVMSG #ch_test0 :msg_test3 msg_test4
@@ -229,14 +197,14 @@ log 3 $ oof!~oof@oof.oof joins
 insert servermsglogged : +0 MSG :bar!~bar@bar.bar NICK :bazbaz
 log 1 $ users:1:nick set to: [bazbaz]
 log 3,4 $ bar!~bar@bar.bar renames bazbaz
-insert cmd_nick : +1 ? myself
+insert cmd-nick : +1 ? myself
 insert servermsglogged : +0 MSG :foo!~foobarbaz@baz.bar.foo NICK :myself
 log 1 $ users:me:nick set to: [myself]
 log 3,4 $ foo!~foobarbaz@baz.bar.foo renames myself
 log 1 $ nick_wanted set to: [myself]
 
 # reverting to foo to easen fragment re-use later on
-insert cmd_nick : +1 ? foo
+insert cmd-nick : +1 ? foo
 insert servermsglogged : +0 MSG :myself!~foobarbaz@baz.bar.foo NICK :foo
 log 1 $ users:me:nick set to: [foo]
 log 3,4 $ myself!~foobarbaz@baz.bar.foo renames foo
@@ -258,15 +226,12 @@ log 1 $ users:1 cleared
 
 # check effects of own QUIT while present in one channel
 insert part-ch_test1
-insert cmd-disconnect
-insert servermsglogged : +0 MSG :foo!~foobarbaz@baz.bar.foo QUIT :Client Quit
-log 1 $ users:me:exit_msg set to: [QClient Quit]
-log , $ foo!~foobarbaz@baz.bar.foo quits: Client Quit
+insert cmd-disconnect-0 : +0 ~baz ~foobarbaz
 log 1 $ channels:#ch_test0:exits:me set to: [QClient Quit]
 log 1 $ channels:#ch_test0:user_ids set to: [2], [4], [6]
 log 3 $ foo!~foobarbaz@baz.bar.foo quits: Client Quit
 log 1 $ channels:#ch_test0:exits:me cleared
-insert error-to-disconnect :-1 +0 ? Closing link: Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye]
+insert cmd-disconnect-1 :-1 +0
 insert disconnect1 : +1 WIN_IDS 2,3,4
 
 # check /reconnect calling auto-rejoin on the one channel inhabited on previous leaving
@@ -276,5 +241,5 @@ insert reconnect
 servermsg 0 FAKE_IRC_CONN_ABORT_EXCEPTION
 insert disconnect0 :-1 +1 EXIT_MSG broken: FAKE_IRC_CONN_ABORT_EXCEPTION
 insert disconnect1 : +1 WIN_IDS 2,3,4
-log 1 $ will retry connecting in 1 seconds
+insert retry-in : +1 ? 1
 insert reconnect
index 2319c1cf15be00a5cef71b54ee0ac811bf215645..0695c0d6763c1ab80747b1cbfee55a433dbc5074 100644 (file)
@@ -6,13 +6,16 @@ insert ./lib/conn-error
 insert ./lib/disconnect
 # for: disconnect1
 insert ./lib/error-to-disconnect
+insert ./lib/error-to-disconnected
 insert ./lib/retry-in
+insert ./lib/usermode
 
 × ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
 
 # to prepare, initiate connection
 insert connect
 insert attempting-to-connected
+insert usermode
 
 # fail to reconnect while connected
 > /window 1
@@ -20,8 +23,9 @@ insert attempting-to-connected
 log 1 $ not re-connecting since already connected
 
 # handle /disconnect on being connected
-insert cmd-disconnect
-insert conn-error : +0 §§§ Closing link: (whatever@whatever.com) [Quit: ircplom says bye]
+insert cmd-disconnect-0
+insert cmd-disconnect-1 :-1
+insert disconnect1 1: +1 WIN_IDS 2
 
 # fail to disconnect when already disconnected
 > /disconnect
@@ -32,7 +36,7 @@ log 1 $ already disconnected and not attempting connect
 insert attempting-to-connected
 
 # allow /disconnect outside connection for auto-connect stops
-insert conn-error : +0 §§§ Closing link: (Connection timed out)
+insert error-to-disconnected : +0 §§§ Closing link: (Connection timed out)
 insert retry-in : +1 ? 1
 > /disconnect
 log 1 $ already disconnected, stopped connecting attempts
index 1759636540633022ab1644d83487ba7eb5c9e468..4817f7b3ece008e2c57b04ece0a089d651adae97 100644 (file)
@@ -1,15 +1,15 @@
 insert ./lib/attempting-to-connected
-insert ./lib/conn-error
 insert ./lib/connect-to-connected
 insert ./lib/disconnect
 # for: disconnect1
 insert ./lib/error-to-disconnect
+insert ./lib/error-to-disconnected
 insert ./lib/retry-in
 
 × reconnect-error-logged
 > /reconnect
 insert attempting-to-connected
-insert conn-error : +0 §§§ XXX
+insert error-to-disconnected : +0 §§§ XXX
 
 × ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
 
@@ -17,7 +17,7 @@ insert conn-error : +0 §§§ XXX
 insert connect-to-connected
 
 # test default ERROR handling
-insert conn-error : +0 §§§ abc def ghi
+insert error-to-disconnected : +0 §§§ abc def ghi
 
 # test ERROR regex (non-)matches
 > /window 1
diff --git a/src/tests/lib/channels b/src/tests/lib/channels
new file mode 100644 (file)
index 0000000..bc3732d
--- /dev/null
@@ -0,0 +1,37 @@
+insert ./lib/servermsglogged
+
+× cmd-nick
+> /nick ?
+log 1 > NICK :?
+
+× JOIN0
+log 1 > JOIN :CHANNEL
+insert servermsglogged : +0 MSG :foo!~foobarbaz@baz.bar.foo JOIN CHANNEL
+
+× join-w-topic
+> /join CHANNAME
+insert JOIN0 : +0 CHANNEL CHANNAME
+insert servermsglogged : +0 MSG :foo.bar.baz 332 foo CHANNAME :foo bar baz
+log 1 $ channels:CHANNAME:exits cleared
+insert servermsglogged : +0 MSG :foo.bar.baz 333 foo CHANNAME bar!~bar@OLD.bar.bar 1234567890
+log 1 $ channels:CHANNAME:topic set to: [Topic(what='foo bar baz', who=NickUserHost(nick='bar', user='~bar', host='OLD.bar.bar'))]
+log 4 $ bar!~bar@OLD.bar.bar set topic: foo bar baz
+
+× part0
+> /part
+log 1 > PART :CHANNEL
+insert servermsglogged : +0 MSG :foo!~foobarbaz@baz.bar.foo PART :CHANNEL
+log 1 $ channels:CHANNEL:exits:me set to: [P]
+log 1 $ channels:CHANNEL:user_ids cleared
+
+× part1
+log 1 $ channels:CHANNEL:exits:me cleared
+log 1 $ channels:CHANNEL cleared
+
+× topics-test
+log 1 $ channels:CHANNAME:topic set to: [Topic(what='foo bar baz', who=NickUserHost(nick='bar', user='~bar', host='bar.bar'))]
+log 4 $ bar!~bar@bar.bar set topic: foo bar baz
+insert servermsglogged : +0 MSG :bar!~bar@bar.bar TOPIC CHANNAME :foo bar baz
+insert servermsglogged : +0 MSG :bar!~bar@bar.bar TOPIC CHANNAME :foo foo baz
+log 1 $ channels:CHANNAME:topic set to: [Topic(what='foo foo baz', who=NickUserHost(nick='bar', user='~bar', host='bar.bar'))]
+log 4 $ bar!~bar@bar.bar set topic: foo foo baz
index 3158756c3e292c121f02a52059a6cba6cdd318f6..489c51b49a61de0fa36b52215af97f5902852c21 100644 (file)
@@ -1,3 +1,13 @@
-× cmd-disconnect
+insert ./lib/isupport-clear
+insert ./lib/servermsglogged
+insert ./lib/error-to-disconnect
+
+× cmd-disconnect-0
 > /disconnect
 log 1 > QUIT :ircplom says bye
+insert servermsglogged : +0 MSG :foo!~baz@baz.bar.foo QUIT :Client Quit
+log 1 $ users:me:exit_msg set to: [QClient Quit]
+log , $ foo!~baz@baz.bar.foo quits: Client Quit
+
+× cmd-disconnect-1
+insert error-to-disconnect : +0 ? Closing link: [Quit: ircplom says bye]
diff --git a/src/tests/lib/conn-error b/src/tests/lib/conn-error
deleted file mode 100644 (file)
index c15366b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-insert ./lib/disconnect
-# for: disconnect1
-insert ./lib/error-to-disconnect
-
-× conn-error
-insert error-to-disconnect :-1 +0 ? §§§
-insert disconnect1 1:-1 +1 WIN_IDS 2
-
index 03f15591e47eaa02dcef0cc43c7341a0bdb56f2b..d288fc9bbf98e15aad51127f38b2cbf8a223e64e 100644 (file)
@@ -5,4 +5,3 @@ insert ./lib/servermsglogged
 × error-to-disconnect
 insert servermsglogged : +0 MSG ERROR :?
 insert disconnect0 : +1 EXIT_MSG ?
-
diff --git a/src/tests/lib/error-to-disconnected b/src/tests/lib/error-to-disconnected
new file mode 100644 (file)
index 0000000..b7b760a
--- /dev/null
@@ -0,0 +1,7 @@
+insert ./lib/disconnect
+# for: disconnect1
+insert ./lib/error-to-disconnect
+
+× error-to-disconnected
+insert error-to-disconnect :-1 +0 ? §§§
+insert disconnect1 1:-1 +1 WIN_IDS 2
diff --git a/src/tests/lib/pingpong b/src/tests/lib/pingpong
new file mode 100644 (file)
index 0000000..d2f2bec
--- /dev/null
@@ -0,0 +1,5 @@
+insert ./lib/servermsglogged
+
+× ping-pong
+insert servermsglogged : +0 MSG PING :?
+log 1 > PONG :?
diff --git a/src/tests/lib/usermode b/src/tests/lib/usermode
new file mode 100644 (file)
index 0000000..65abf69
--- /dev/null
@@ -0,0 +1,9 @@
+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 dd32390ec7445af74d05cce869faa31c30306d52..7d82cb6d8931ccd0bc960b0ddf920e4b3c075e6e 100644 (file)
@@ -2,6 +2,7 @@ insert ./lib/conn
 # for: attempting, connected
 insert ./lib/connect-to-connected
 insert ./lib/no-timely-pong
+insert ./lib/pingpong
 insert ./lib/servermsglogged
 insert ./lib/servernotice
 
@@ -23,8 +24,7 @@ insert no-timely-pong
 insert connect-to-connected
 
 # ensure we PONG properly
-insert servermsglogged : +0 MSG PING :?
-log 1 > PONG :?
+insert ping-pong
 
 insert full-timeout
 
index 81938bc5a8550fcdcc478b7026d423e70040f2b2..02faaca09f2fefd66832bbb0766cbc1320b40d24 100644 (file)
@@ -1,13 +1,15 @@
 insert ./lib/bazbarfoo
 # for: attempting-bazbarfoo, connect-bazbarfoo
+insert ./lib/channels
+# for: cmd-nick, JOIN0, join-w-topic, part0, part1, topics-test
 insert ./lib/cmd-disconnect
 insert ./lib/conn
 # for: attempting, connect, connected
 insert ./lib/disconnect
 # for: disconnect0, disconnect1
 insert ./lib/enter-list-start
-insert ./lib/error-to-disconnect
 insert ./lib/isupport-clear
+insert ./lib/pingpong
 insert ./lib/retry-in
 insert ./lib/servermsglogged
 insert ./lib/servernotice
@@ -20,8 +22,7 @@ insert ./lib/servernotice
 insert servernotice : +0 XXX *** Looking up your ident...
 insert servernotice : +0 XXX *** Looking up your hostname...
 insert servernotice : +0 XXX *** Found your hostname (baz.bar.foo)
-insert servermsglogged : +0 MSG PING :?
-log 1 > PONG :?
+insert ping-pong : +0
 
 # handle 433
 insert servermsglogged : +0 MSG :*.?.net 433 * foo :Nickname already in use
@@ -111,27 +112,25 @@ log 3 < (SaslServ) Last login from ~foobarbaz@foo.bar.baz on Jan 1 22:00:00 2021
 × during_conn
 
 # test recoverable 432
-> /nick @foo
-log 1 > NICK :@foo
+insert cmd-nick : +1 ? @foo
 insert servermsglogged : +0 MSG :*.?.net 432 foo1 @foo :Erroneous nickname
 log 1 $ nickname refused for bad format, keeping current one
 
-# join channel, collect topic, residents; update me:user from JOIN message; ensure topic.who not affecting users DB
-> /join #test
-log 1 > JOIN :#test
-insert servermsglogged : +0 MSG :foo1!~foobarbaz@baz.bar.foo JOIN #test
+# rename to easen code-reuse
+insert cmd-nick : +1 ? foo
+insert servermsglogged : +0 MSG :foo1!~foobarbaz@baz.bar.foo NICK :foo
 log 1 $ users:me:user set to: [~foobarbaz]
-insert servermsglogged : +0 MSG :foo.bar.baz 332 foo1 #test :foo bar baz
-log 1 $ channels:#test:exits cleared
-insert servermsglogged : +0 MSG :foo.bar.baz 333 foo1 #test bar!~bar@OLD.bar.bar 1234567890
-log 1 $ channels:#test:topic set to: [Topic(what='foo bar baz', who=NickUserHost(nick='bar', user='~bar', host='OLD.bar.bar'))]
-log 4 $ bar!~bar@OLD.bar.bar set topic: foo bar baz
-insert servermsglogged : +0 MSG :foo.bar.baz 353 foo1 @ #test :foo1 @bar
+log 1 $ users:me:nick set to: [foo]
+log rename_win_ids $ foo1!~foobarbaz@baz.bar.foo renames foo
+
+# join channel, collect topic, residents; update me:user from JOIN message; ensure topic.who not affecting users DB
+insert join-w-topic : +0 CHANNAME #test
+insert servermsglogged : +0 MSG :foo.bar.baz 353 foo @ #test :foo @bar
 log 1 $ users:1:nick set to: [?]
 log 1 $ users:1:nick set to: [bar]
-insert servermsglogged : +0 MSG :foo.bar.baz 366 foo1 #test :End of /NAMES list.
+insert servermsglogged : +0 MSG :foo.bar.baz 366 foo #test :End of /NAMES list.
 log 1 $ channels:#test:user_ids set to: [1], [me]
-log 4 $ residents: bar, foo1
+log 4 $ residents: bar, foo
 
 # deliver PRIVMSG to channel window, update sender's user+host from metadata
 insert servermsglogged : +0 MSG :bar!~bar@bar.bar PRIVMSG #test :hi there
@@ -141,12 +140,7 @@ log 4 < [bar] hi there
 
 # check _changing_ TOPIC message is communicated to channel window, as long as either content or who change
 insert servermsglogged : +0 MSG :bar!~bar@bar.bar TOPIC #test :foo bar baz
-log 1 $ channels:#test:topic set to: [Topic(what='foo bar baz', who=NickUserHost(nick='bar', user='~bar', host='bar.bar'))]
-log 4 $ bar!~bar@bar.bar set topic: foo bar baz
-insert servermsglogged : +0 MSG :bar!~bar@bar.bar TOPIC #test :foo bar baz
-insert servermsglogged : +0 MSG :bar!~bar@bar.bar TOPIC #test :abc def ghi
-log 1 $ channels:#test:topic set to: [Topic(what='abc def ghi', who=NickUserHost(nick='bar', user='~bar', host='bar.bar'))]
-log 4 $ bar!~bar@bar.bar set topic: abc def ghi
+insert topics-test : +0 CHANNAME #test
 
 # process non-self channel JOIN
 insert servermsglogged : +0 MSG :baz!~baz@baz.baz JOIN :#test
@@ -158,33 +152,27 @@ log 1 $ channels:#test:user_ids set to: [1], [2], [me]
 log 4 $ baz!~baz@baz.baz joins
 
 # join second channel with partial residents identity to compare distribution of resident-specific messages
-> /join #testtest
-log 1 > JOIN :#testtest
-insert servermsglogged : +0 MSG :foo1!~foobarbaz@baz.bar.foo JOIN #testtest
-insert servermsglogged : +0 MSG :foo.bar.baz 332 foo1 #testtest :baz bar foo
-log 1 $ channels:#testtest:exits cleared
-insert servermsglogged : +0 MSG :foo.bar.baz 333 foo1 #testtest bar!~bar@OLD.bar.bar 1234567890
-log 1 $ channels:#testtest:topic set to: [Topic(what='baz bar foo', who=NickUserHost(nick='bar', user='~bar', host='OLD.bar.bar'))]
-log 5 $ bar!~bar@OLD.bar.bar set topic: baz bar foo
-insert servermsglogged : +0 MSG :foo.bar.baz 353 foo1 @ #testtest :foo1 baz
-insert servermsglogged : +0 MSG :foo.bar.baz 366 foo1 #testtest :End of /NAMES list.
+insert join-w-topic :-1 +0 CHANNAME #testtest
+log 5 $ bar!~bar@OLD.bar.bar set topic: foo bar baz
+insert servermsglogged : +0 MSG :foo.bar.baz 353 foo @ #testtest :foo baz
+insert servermsglogged : +0 MSG :foo.bar.baz 366 foo #testtest :End of /NAMES list.
 log 1 $ channels:#testtest:user_ids set to: [2], [me]
-log 5 $ residents: baz, foo1
+log 5 $ residents: baz, foo
 
 # handle query window with known user
-insert servermsglogged : +0 MSG :baz!~baz@baz.baz PRIVMSG foo1 :hi there
+insert servermsglogged : +0 MSG :baz!~baz@baz.baz PRIVMSG foo :hi there
 log 6 < [baz] hi there
 > /privmsg baz hello, how is it going
 log 1 > PRIVMSG baz :hello, how is it going
-log 6 > [foo1] hello, how is it going
-insert servermsglogged : +0 MSG :baz!~baz@baz.baz PRIVMSG foo1 :fine!
+log 6 > [foo] hello, how is it going
+insert servermsglogged : +0 MSG :baz!~baz@baz.baz PRIVMSG foo :fine!
 log 6 < [baz] fine!
 
 # handle failure to query absent user
 > /privmsg barbar hello!
 log 1 > PRIVMSG barbar :hello!
-log 7 > [foo1] hello!
-insert servermsglogged : +0 MSG :*.?.net 401 foo1 barbar :No such nick/channel
+log 7 > [foo] hello!
+insert servermsglogged : +0 MSG :*.?.net 401 foo barbar :No such nick/channel
 log 7 $ barbar not online
 
 # handle non-self renaming
@@ -232,12 +220,11 @@ log 1 $ channels:#testtest:exits:2 cleared
 log 1 $ users:2 cleared
 
 # handle self-PART: clear channel, and its squatters
-insert servermsglogged : +0 MSG :foo1!~foobarbaz@baz.bar.foo PART :#test
-log 1 $ channels:#test:exits:me set to: [P]
+> /window 4
+insert part0 :-1 +0 CHANNEL #test
 log 1 $ channels:#test:user_ids set to: [3]
-log 4 $ foo1!~foobarbaz@baz.bar.foo parts
-log 1 $ channels:#test:exits:me cleared
-log 1 $ channels:#test cleared
+log 4 $ foo!~foobarbaz@baz.bar.foo parts
+insert part1 : +1 CHANNEL #test
 log 1 $ users:3 cleared
 
 # handle lack of implementation
@@ -246,15 +233,13 @@ log 1 $ No handler implemented for: foo bar baz
 log 2,3,4,5,6,7 $ No handler implemented for: foo bar baz
 
 # handle /disconnect, clear all
-insert cmd-disconnect : +1
-insert servermsglogged : +0 MSG :foo1!~foobarbaz@baz.bar.foo QUIT :Client Quit
-log 1 $ users:me:exit_msg set to: [QClient Quit]
-log 3,6,7 $ foo1!~foobarbaz@baz.bar.foo quits: Client Quit
+insert cmd-disconnect-0 :-1 +0 ~baz ~foobarbaz
+log 3,6,7 $ foo!~foobarbaz@baz.bar.foo quits: Client Quit
 log 1 $ channels:#testtest:exits:me set to: [QClient Quit]
 log 1 $ channels:#testtest:user_ids cleared
-log 5 $ foo1!~foobarbaz@baz.bar.foo quits: Client Quit
+log 5 $ foo!~foobarbaz@baz.bar.foo quits: Client Quit
 log 1 $ channels:#testtest:exits:me cleared
-insert error-to-disconnect : +0 ? Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye]
+insert cmd-disconnect-1 : +0
 insert disconnect1 :-1 +1 WIN_IDS 2,3,4,5,6,7
 log 1 $ motd cleared
 log 1 $ sasl_account set to: []
@@ -318,7 +303,7 @@ log 1 #   /window.prompt.scroll DIRECTION
 log 1 #   /window.raw VERB [PARAMS_STR]
 log 1 #   /window.reconnect
 
-insert during_conn
+insert during_conn : +0 rename_win_ids 3
 
 # test setting up second client, but 432 irrecoverably
 > /connect baz.bar.foo:6697 ?foo bar:baz
@@ -379,4 +364,4 @@ insert conn_init_1
 insert conn_init_2 :2
 log 1 > JOIN :#testtest
 insert conn_init_2 2:
-insert during_conn
+insert during_conn : +0 rename_win_ids 3,6,7
index 73981196d67f7f87f09578d03cf76f82130f8757..c16da481f8983830aceb3afb1f849794fd20b9ab 100644 (file)
@@ -2,7 +2,7 @@ insert ./lib/connect-to-connected
 insert ./lib/enter-list-start
 insert ./lib/enter_misc
 # for: enter-help-win0, enter-unknown, enter-unprefixed
-insert ./lib/servermsglogged
+insert ./lib/pingpong
 
 × lines-empty-1
 line 0 on_black,bright_white §§
@@ -88,10 +88,6 @@ line 0 on_black,bright_green > §§:§§:§§ ?§§
 × line-cal
 line 0 on_black,bright_white 20§§-§§-§§ §§
 
-× ping-pong
-insert servermsglogged : +0 MSG PING :?
-log 1 > PONG :?
-
 × history_0
 insert line-cal : +0
 insert line-invalid-prompt-command : +1 MSG not prefixed by /