--- /dev/null
+× attempting
+log 1 $ connection_state set to: [connecting]
+log 2 $ attempting connection to HOSTNAME:§§ identifying with …
+
+× attempting-foobarbaz
+insert attempting : +1 HOSTNAME foo.bar.baz
--- /dev/null
+× connected
+log 1 $ connection_state set to: [connected]
+log 2 $ CONNECTED
+log 1 > CAP LS :302
--- /dev/null
+insert ./__connected.lib
+
+× connected_w_pw_listing
+log 2 $ - PW_LISTING
+insert connected : +1
+insert ./__attempting.lib
+insert ./__connected.lib
insert ./__init_clear_hostname.lib
× identifiers
log 2 $ - username: foobarbazquux
log 2 $ - password: bar
-× connection_state
-log 1 $ connection_state set to: [?]
-
-× attempting
-insert connection_state : +1 ? connecting
-log 2 $ attempting connection to HOSTNAME:§§ identifying with …
-
-× attempting-foobarbaz
-insert attempting : +1 HOSTNAME foo.bar.baz
-
× attempting-bazbarfoo
insert attempting : +3 HOSTNAME baz.bar.foo
× fake-testing-timeout
-insert connection_state : +1 ? failed to connect: FAKE TESTING TIMEOUT
+log 1 $ connection_state set to: [failed to connect: FAKE TESTING TIMEOUT]
insert retry-in : +1 ? §§
× port
× conn
insert identifiers : +2
-insert connection_state : +1 ? connected
-log 2 $ CONNECTED
-log 1 > CAP LS :302
+insert connected
log 1 > USER foobarbazquux 0 * :baz
log 1 > NICK :foo
log 1 > PING :what's up?
servermsg 0 timeout
servermsg 0 no timely PONG from server
-insert connection_state : +1 ? broken: no timely PONG from server
+log 1 $ connection_state set to: [broken: no timely PONG from server]
insert isupport-clear
-insert connection_state : +1 ?
+log 1 $ connection_state set to: []
log 2 $ DISCONNECTED
insert retry-in : +1 ? 1
--- /dev/null
+insert ./__attempting.lib
+insert ./__connected_w_pw_listing.lib
+insert ./__init_clear_hostname.lib
+insert ./__servermsglogged.lib
+
+× connecting
+insert attempting-foobarbaz : +1 §§ 6697
+log 2 $ - nickname: foo
+log 2 $ - realname: bar
+log 2 $ - username: baz
+insert connected_w_pw_listing : +1 PW_LISTING no password
+log 1 > USER baz 0 * :bar
+log 1 > NICK :foo
+
+× disconnect-init
+> /disconnect
+log 1 > QUIT :ircplom says bye
+insert servermsglogged : +0 MSG ERROR :Closing link: ircplom says bye
+log 1 $ connection_state set to: [Closing link: ircplom says bye]
+insert isupport-clear
+
+× later-disconnect-to-reconnect
+log 1 $ connection_state set to: []
+log 2 $ DISCONNECTED
+> /reconnect
+insert connecting
+
+× disconnect-to-reconnect-clear-caps
+insert disconnect-init
+log 1 $ caps cleared
+insert later-disconnect-to-reconnect
+
+× cap_msg
+insert servermsglogged : +0 MSG :*.?.net CAP ???
+
+× ×--------------------------
+
+> /connect foo.bar.baz:6697 foo bar:baz
+insert init-clear-hostname : +1 HOSTNAME foo.bar.baz
+log 1 $ port set to: [6697]
+log 1 $ nick_wanted set to: [foo]
+log 1 $ user_wanted set to: [baz]
+log 1 $ realname set to: [bar]
+insert connecting
+
+# check handling of empty caps list
+insert cap_msg : +0 ??? * LS :
+log 1 > CAP :LIST
+insert cap_msg : +0 ??? * LIST :
+log 1 > CAP :END
+
+> /window 2
+insert disconnect-init
+insert later-disconnect-to-reconnect
+
+# check full, alphabetical processing of multi-line responses
+insert cap_msg : +0 ??? * LS * :foo bar baz
+insert cap_msg : +0 ??? * LS * :oof rab zab
+insert cap_msg : +0 ??? * LS :ofo rba zba
+log 1 $ caps:bar:data set to: []
+log 1 $ caps:baz:data set to: []
+log 1 $ caps:foo:data set to: []
+log 1 $ caps:ofo:data set to: []
+log 1 $ caps:oof:data set to: []
+log 1 $ caps:rab:data set to: []
+log 1 $ caps:rba:data set to: []
+log 1 $ caps:zab:data set to: []
+log 1 $ caps:zba:data set to: []
+log 1 > CAP :LIST
+insert cap_msg : +0 ??? * LIST * :foo rab oof
+insert cap_msg : +0 ??? * LIST :zab rba
+log 1 $ caps:foo:enabled set to: [True]
+log 1 $ caps:oof:enabled set to: [True]
+log 1 $ caps:rab:enabled set to: [True]
+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
+
+# check REQ for "sasl" (even if no PLAIN), denied
+insert servermsglogged : +0 MSG :*.?.net CAP * LS :foo bar sasl
+log 1 $ caps:bar:data set to: []
+log 1 $ caps:foo:data set to: []
+log 1 $ caps:sasl:data set to: []
+log 1 > CAP REQ :sasl
+log 1 > CAP :LIST
+insert cap_msg : +0 ??? * NAK :sasl
+insert cap_msg : +0 ??? * LIST :
+log 1 > CAP :END
+
+insert disconnect-to-reconnect-clear-caps
+
+# check REQ for "sasl" with PLAIN successful (but for lack of password, negotiation still ending instantly)
+insert cap_msg : +0 ??? * LS :sasl=PLAIN
+log 1 $ caps:sasl:data set to: []
+log 1 $ caps:sasl:data set to: [PLAIN]
+log 1 > CAP REQ :sasl
+log 1 > CAP :LIST
+insert cap_msg : +0 ??? * ACK :sasl
+insert cap_msg : +0 ??? * LIST :sasl
+log 1 $ caps:sasl:enabled set to: [True]
+log 1 > CAP :END
+
+# check NEW, DEL working after CAP :END
+insert cap_msg : +0 ??? foo NEW :foo bar=baz
+log 1 $ users:me:nick set to: [?]
+log 1 $ users:me:nick set to: [foo]
+log 1 $ caps:bar:data set to: []
+log 1 $ caps:bar:data set to: [baz]
+log 1 $ caps:foo:data set to: []
+insert cap_msg : +0 ??? foo DEL :sasl foo
+log 1 $ caps:foo cleared
+log 1 $ caps:sasl cleared
+insert ./__attempting.lib
+insert ./__connected_w_pw_listing.lib
insert ./__init_clear_hostname.lib
× ×---------------------------------------------------
log 0 # Found config at tests/config.toml, reading …
-log 0 # Connecting: {'hostname': 'irc.test0.net', 'nickname': 'foo', 'password': 'bar', 'username': 'baz', 'realname': 'quux', 'port': 1234, 'channels': ['#test', '##testtest']}
-insert init-clear-hostname : +1 HOSTNAME irc.test0.net
+log 0 # Connecting: {'hostname': 'foo.bar.baz', 'nickname': 'foo', 'password': 'supersecret', 'username': 'baz', 'realname': 'bar', 'port': 1234, 'channels': ['#test', '##testtest']}
+insert init-clear-hostname : +1 HOSTNAME foo.bar.baz
log 1 $ port set to: [1234]
log 1 $ nick_wanted set to: [foo]
log 1 $ user_wanted set to: [baz]
-log 1 $ realname set to: [quux]
-log 1 $ password set to: [bar]
-log 1 $ connection_state set to: [connecting]
-log 2 $ attempting connection to irc.test0.net:1234 identifying with …
+log 1 $ realname set to: [bar]
+log 1 $ password set to: [supersecret]
+insert attempting-foobarbaz : +1 §§ 1234
log 2 $ - nickname: foo
-log 2 $ - realname: quux
+log 2 $ - realname: bar
log 2 $ - username: baz
-log 2 $ - password: bar
-log 1 $ connection_state set to: [connected]
-log 2 $ CONNECTED
-log 1 > CAP LS :302
-log 1 > USER baz 0 * :quux
+insert connected_w_pw_listing : +1 PW_LISTING password: supersecret
+log 1 > USER baz 0 * :bar
log 1 > NICK :foo
to_highlight = ['quux']
[[server]]
-hostname = 'irc.test0.net'
+hostname = 'foo.bar.baz'
nickname = 'foo'
-password = 'bar'
+password = 'supersecret'
username = 'baz'
-realname = 'quux'
+realname = 'bar'
port = 1234
channels = [
'#test',
+insert ./__attempting.lib
+insert ./__connected_w_pw_listing.lib
insert ./__init_clear_hostname.lib
insert ./__servermsglogged.lib
log 2 $ DISCONNECTED
× connecting
-log 1 $ connection_state set to: [connecting]
-log 2 $ attempting connection to foo.bar.baz:6697 identifying with …
+insert attempting-foobarbaz : +1 §§ 6697
log 2 $ - nickname: foo
log 2 $ - realname: bar
log 2 $ - username: baz
-log 2 $ - no password
-log 1 $ connection_state set to: [connected]
-log 2 $ CONNECTED
-log 1 > CAP LS :302
+insert connected_w_pw_listing : +1 PW_LISTING no password
log 1 > USER baz 0 * :bar
log 1 > NICK :foo
+insert ./__attempting.lib
+insert ./__connected_w_pw_listing.lib
insert ./__init_clear_hostname.lib
insert ./__servermsglogged.lib
× connecting
-log 1 $ connection_state set to: [connecting]
-log 2 $ attempting connection to foo.bar.baz:6697 identifying with …
+insert attempting-foobarbaz : +1 §§ 6697
log 2 $ - nickname: foo
log 2 $ - realname: bar
log 2 $ - username: baz
-log 2 $ - no password
-log 1 $ connection_state set to: [connected]
-log 2 $ CONNECTED
-log 1 > CAP LS :302
+insert connected_w_pw_listing : +1 PW_LISTING no password
log 1 > USER baz 0 * :bar
log 1 > NICK :foo
+insert ./__attempting.lib
+insert ./__connected_w_pw_listing.lib
insert ./__init_clear_hostname.lib
insert ./__servermsglogged.lib
× conn
-log 1 $ connection_state set to: [connecting]
-log 2 $ attempting connection to foo.bar.baz:6697 identifying with …
+insert attempting-foobarbaz : +1 §§ 6697
log 2 $ - nickname: foo
log 2 $ - realname: baz
log 2 $ - username: foobarbazquux
-log 2 $ - password: bar
-log 1 $ connection_state set to: [connected]
-log 2 $ CONNECTED
-log 1 > CAP LS :302
+insert connected_w_pw_listing : +1 PW_LISTING password: bar
log 1 > USER foobarbazquux 0 * :baz
log 1 > NICK :foo
+insert ./__attempting.lib
+insert ./__connected_w_pw_listing.lib
insert ./__init_clear_hostname.lib
insert ./__servermsglogged.lib
insert ./__enter_list.lib
+× attempting-6697
+insert attempting : +1 §§ 6697
+
× servernotice
insert servermsglogged : +0 MSG :*.?.net NOTICE * :XXX
log 2 < (server) XXX
× conn_init_0
-log 1 $ port set to: [6697]
-log 1 $ connection_state set to: [connecting]
-log 2 $ attempting connection to foo.bar.baz:6697 identifying with …
+insert attempting-foobarbaz : +1 §§ 6697
log 2 $ - nickname: foo
log 2 $ - realname: baz
log 2 $ - username: foobarbazquux
-log 2 $ - password: bar
-log 1 $ connection_state set to: [connected]
-log 2 $ CONNECTED
-log 1 > CAP LS :302
+
+× conn_init_1
log 1 > USER foobarbazquux 0 * :baz
log 1 > NICK :foo
-× conn_init_1
# expect some NOTICE and PING to process/reply during initiation
insert servernotice : +0 XXX *** Looking up your ident...
insert servernotice : +0 XXX *** Looking up your hostname...
log 1 $ user_wanted set to: [foobarbazquux]
log 1 $ realname set to: [baz]
log 1 $ password set to: [bar]
+log 1 $ port set to: [6697]
insert conn_init_0
+insert connected_w_pw_listing : +1 PW_LISTING password: bar
insert conn_init_1
insert conn_init_2
log 8 $ nick_wanted set to: [?foo]
log 8 $ user_wanted set to: [foo]
log 8 $ realname set to: [foo]
-insert conn_init_0 :2 +8
-log 9 $ attempting connection to baz.bar.foo:6697 identifying with …
+log 8 $ port set to: [6697]
+insert attempting-6697 : +8 HOSTNAME baz.bar.foo
log 9 $ - nickname: ?foo
log 9 $ - realname: foo
log 9 $ - username: foo
-log 9 $ - no password
-insert conn_init_0 7:10 +8
+insert connected_w_pw_listing : +8 PW_LISTING no password
log 8 > USER foo 0 * :foo
log 8 > NICK :?foo
servermsg 1 :*.?.net 432 * ?foo :Erroneous nickname
log 10 $ nick_wanted set to: [baz]
log 10 $ user_wanted set to: [baz]
log 10 $ realname set to: [baz]
-insert conn_init_0 :2 +10
-log 11 $ attempting connection to baz.baz.baz:6697 identifying with …
+log 10 $ port set to: [6697]
+insert attempting-6697 : +10 HOSTNAME baz.baz.baz
log 11 $ - nickname: baz
log 11 $ - realname: baz
log 11 $ - username: baz
-log 11 $ - no password
-insert conn_init_0 7:10 +10
+insert connected_w_pw_listing : +10 PW_LISTING no password
log 10 > USER baz 0 * :baz
log 10 > NICK :baz
servermsg 2 FAKE_IRC_CONN_ABORT_EXCEPTION
# check that (save TUI tests assuming start on window 0, and no 4 yet) on reconnect, all the same effects can be expected
> /reconnect
-insert conn_init_0 1:8
+insert conn_init_0
+log 2 $ - password: bar
+log 1 $ connection_state set to: [connected]
log 2,3,4,5,6,7 $ CONNECTED
-insert conn_init_0 9:
+log 1 > CAP LS :302
insert conn_init_1
insert conn_init_2 :2
log 1 > JOIN :#testtest
+insert ./__attempting.lib
+insert ./__connected_w_pw_listing.lib
insert ./__init_clear_hostname.lib
insert ./__servermsglogged.lib
insert ./__tui.lib
log 1 $ user_wanted set to: [baz]
log 1 $ realname set to: [bar]
log 1 $ port set to: [6697]
-log 1 $ connection_state set to: [connecting]
-log 2 $ attempting connection to foo.bar.baz:6697 identifying with …
+insert attempting-foobarbaz : +1 §§ 6697
log 2 $ - nickname: foo
log 2 $ - realname: bar
log 2 $ - username: baz
-log 2 $ - no password
-log 1 $ connection_state set to: [connected]
-log 2 $ CONNECTED
-log 1 > CAP LS :302
+insert connected_w_pw_listing : +1 PW_LISTING no password
log 1 > USER baz 0 * :bar
log 1 > NICK :foo
insert lines-empty :20
+insert ./__attempting.lib
+insert ./__connected_w_pw_listing.lib
insert ./__servermsglogged.lib
insert ./__init_clear_hostname.lib
log 1 $ user_wanted set to: [baz]
log 1 $ realname set to: [bar]
log 1 $ port set to: [6697]
-log 1 $ connection_state set to: [connecting]
-log 2 $ attempting connection to foo.bar.baz:6697 identifying with …
+insert attempting-foobarbaz : +1 §§ 6697
log 2 $ - nickname: foo
log 2 $ - realname: bar
log 2 $ - username: baz
-log 2 $ - no password
-log 1 $ connection_state set to: [connected]
-log 2 $ CONNECTED
-log 1 > CAP LS :302
+insert connected_w_pw_listing : +1 PW_LISTING no password
log 1 > USER baz 0 * :bar
log 1 > NICK :foo
> /window 1