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
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
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
× ×--------------------------
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
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
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
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
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
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
> /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
# 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
# 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]
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
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
# 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
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
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
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
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
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
× ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
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
--- /dev/null
+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
-× 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]
+++ /dev/null
-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
-
× error-to-disconnect
insert servermsglogged : +0 MSG ERROR :?
insert disconnect0 : +1 EXIT_MSG ?
-
--- /dev/null
+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
--- /dev/null
+insert ./lib/servermsglogged
+
+× ping-pong
+insert servermsglogged : +0 MSG PING :?
+log 1 > PONG :?
--- /dev/null
+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]
# for: attempting, connected
insert ./lib/connect-to-connected
insert ./lib/no-timely-pong
+insert ./lib/pingpong
insert ./lib/servermsglogged
insert ./lib/servernotice
insert connect-to-connected
# ensure we PONG properly
-insert servermsglogged : +0 MSG PING :?
-log 1 > PONG :?
+insert ping-pong
insert full-timeout
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
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
× 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
# 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
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
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
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: []
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
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
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 §§
× 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 /