From: Christian Heller Date: Tue, 11 Nov 2025 20:44:17 +0000 (+0100) Subject: Major tests and tests library interdependencies refactoring. X-Git-Url: https://plomlompom.com/repos/day?a=commitdiff_plain;h=57db0c7377796a633d8e05d355bb0bd7518b9362;p=ircplom Major tests and tests library interdependencies refactoring. --- diff --git a/src/tests/__attempting-to-connected.lib b/src/tests/__attempting-to-connected.lib new file mode 100644 index 0000000..75ea13a --- /dev/null +++ b/src/tests/__attempting-to-connected.lib @@ -0,0 +1,7 @@ +insert ./__conn.lib +# for: attempting, connected + +× attempting-to-connected +insert attempting +insert connected : +1 WIN_IDS 2 + diff --git a/src/tests/__attempting.lib b/src/tests/__attempting.lib deleted file mode 100644 index 86cf235..0000000 --- a/src/tests/__attempting.lib +++ /dev/null @@ -1,6 +0,0 @@ -× 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 diff --git a/src/tests/__bazbarfoo.lib b/src/tests/__bazbarfoo.lib new file mode 100644 index 0000000..8744b1f --- /dev/null +++ b/src/tests/__bazbarfoo.lib @@ -0,0 +1,8 @@ +insert ./__conn.lib +# for: attempting, connect + +× connect-bazbarfoo +insert connect : +3 foo.bar.baz baz.bar.foo + +× attempting-bazbarfoo +insert attempting : +3 foo.bar.baz baz.bar.foo diff --git a/src/tests/__caps.lib b/src/tests/__caps.lib new file mode 100644 index 0000000..0619211 --- /dev/null +++ b/src/tests/__caps.lib @@ -0,0 +1,10 @@ +insert ./__servermsglogged.lib + +× cap-msg +insert servermsglogged : +0 MSG :*.?.net CAP ??? + +× caps-neg-empty +insert cap-msg : +0 ??? * LS : +log 1 > CAP :LIST +insert cap-msg : +0 ??? * LIST : +log 1 > CAP :END diff --git a/src/tests/__caps_neg_empty.lib b/src/tests/__caps_neg_empty.lib deleted file mode 100644 index 331615c..0000000 --- a/src/tests/__caps_neg_empty.lib +++ /dev/null @@ -1,11 +0,0 @@ -insert ./__servermsglogged.lib - -× cap_msg -insert servermsglogged : +0 MSG :*.?.net CAP ??? - -× caps-neg-empty -insert cap_msg : +0 ??? * LS : -log 1 > CAP :LIST -insert cap_msg : +0 ??? * LIST : -log 1 > CAP :END - diff --git a/src/tests/__cmd-disconnect.lib b/src/tests/__cmd-disconnect.lib new file mode 100644 index 0000000..3158756 --- /dev/null +++ b/src/tests/__cmd-disconnect.lib @@ -0,0 +1,3 @@ +× cmd-disconnect +> /disconnect +log 1 > QUIT :ircplom says bye diff --git a/src/tests/__conn-error.lib b/src/tests/__conn-error.lib new file mode 100644 index 0000000..7ebcc39 --- /dev/null +++ b/src/tests/__conn-error.lib @@ -0,0 +1,8 @@ +insert ./__disconnect.lib +# for: disconnect1 +insert ./__error-to-disconnect.lib + +× conn-error +insert error-to-disconnect :-1 +0 ? §§§ +insert disconnect1 1:-1 +1 WIN_IDS 2 + diff --git a/src/tests/__conn.lib b/src/tests/__conn.lib new file mode 100644 index 0000000..7453889 --- /dev/null +++ b/src/tests/__conn.lib @@ -0,0 +1,29 @@ +insert ./__isupport-clear.lib + +× attempting +log 1 $ connection_state set to: [connecting] +log 2 $ attempting connection to foo.bar.baz:6697 identifying with … +log 2 $ - nickname: foo +log 2 $ - realname: bar +log 2 $ - username: baz +log 2 $ - no password + +× connect +> /connect foo.bar.baz:6697 foo bar:baz +insert isupport-clear : +1 +log 1 $ caps cleared +log 1 $ users cleared +log 1 $ channels cleared +log , $ DISCONNECTED +log 1 $ hostname set to: [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] + +× connected +log 1 $ connection_state set to: [connected] +log WIN_IDS $ CONNECTED +log 1 > CAP LS :302 +log 1 > USER baz 0 * :bar +log 1 > NICK :foo diff --git a/src/tests/__connect-to-connected.lib b/src/tests/__connect-to-connected.lib new file mode 100644 index 0000000..3f717b1 --- /dev/null +++ b/src/tests/__connect-to-connected.lib @@ -0,0 +1,9 @@ +insert ./__attempting-to-connected.lib +# for: attempting-to-connected +insert ./__conn.lib +# for: connect + +× connect-to-connected +insert connect : +1 +insert attempting-to-connected : +1 + diff --git a/src/tests/__connected.lib b/src/tests/__connected.lib deleted file mode 100644 index 53c5613..0000000 --- a/src/tests/__connected.lib +++ /dev/null @@ -1,4 +0,0 @@ -× connected -log 1 $ connection_state set to: [connected] -log 2 $ CONNECTED -log 1 > CAP LS :302 diff --git a/src/tests/__connected_w_pw_listing.lib b/src/tests/__connected_w_pw_listing.lib deleted file mode 100644 index 769114d..0000000 --- a/src/tests/__connected_w_pw_listing.lib +++ /dev/null @@ -1,5 +0,0 @@ -insert ./__connected.lib - -× connected_w_pw_listing -log 2 $ - PW_LISTING -insert connected : +1 diff --git a/src/tests/__disconnect.lib b/src/tests/__disconnect.lib new file mode 100644 index 0000000..70a6796 --- /dev/null +++ b/src/tests/__disconnect.lib @@ -0,0 +1,12 @@ +insert ./__isupport-clear.lib + +× disconnect0 +log 1 $ connection_state set to: [EXIT_MSG] +insert isupport-clear : +1 +log 1 $ caps cleared + +× disconnect1 +log 1 $ channels cleared +log 1 $ connection_state set to: [] +log WIN_IDS $ DISCONNECTED +log 1 $ users cleared diff --git a/src/tests/__enter-list-start.lib b/src/tests/__enter-list-start.lib new file mode 100644 index 0000000..12d7bfa --- /dev/null +++ b/src/tests/__enter-list-start.lib @@ -0,0 +1,4 @@ +× enter-list-start +> /list +log 0 # windows available via /window: +log 0 # 0) :start diff --git a/src/tests/__enter_list.lib b/src/tests/__enter_list.lib deleted file mode 100644 index 12d7bfa..0000000 --- a/src/tests/__enter_list.lib +++ /dev/null @@ -1,4 +0,0 @@ -× enter-list-start -> /list -log 0 # windows available via /window: -log 0 # 0) :start diff --git a/src/tests/__enter_misc.lib b/src/tests/__enter_misc.lib new file mode 100644 index 0000000..0960960 --- /dev/null +++ b/src/tests/__enter_misc.lib @@ -0,0 +1,22 @@ +× enter-help-win0 +> /help +log 0 # commands available in this window: +log 0 # /connect HOST_PORT [NICKNAME_PW] [REALNAME_USERNAME] +log 0 # /help +log 0 # /list +log 0 # /prompt_enter +log 0 # /quit +log 0 # /window TOWARDS +log 0 # /window.history.scroll DIRECTION +log 0 # /window.paste +log 0 # /window.prompt.backspace +log 0 # /window.prompt.move_cursor DIRECTION +log 0 # /window.prompt.scroll DIRECTION + +× enter-unknown +> /? +log 0 # invalid prompt command: /? unknown + +× enter-unprefixed +> ? +log 0 # invalid prompt command: not prefixed by / diff --git a/src/tests/__error-to-disconnect.lib b/src/tests/__error-to-disconnect.lib new file mode 100644 index 0000000..c1b4761 --- /dev/null +++ b/src/tests/__error-to-disconnect.lib @@ -0,0 +1,8 @@ +insert ./__disconnect.lib +# for: disconnect0 +insert ./__servermsglogged.lib + +× error-to-disconnect +insert servermsglogged : +0 MSG ERROR :? +insert disconnect0 : +1 EXIT_MSG ? + diff --git a/src/tests/__init_clear_hostname.lib b/src/tests/__init_clear_hostname.lib deleted file mode 100644 index f48be66..0000000 --- a/src/tests/__init_clear_hostname.lib +++ /dev/null @@ -1,13 +0,0 @@ -× isupport-clear -log 1 $ isupport cleared -log 1 $ isupport:CHANTYPES set to: [#&] -log 1 $ isupport:PREFIX set to: [(ov)@+] -log 1 $ isupport:USERLEN set to: [10] - -× init-clear-hostname -insert isupport-clear : +1 -log 1 $ caps cleared -log 1 $ users cleared -log 1 $ channels cleared -log , $ DISCONNECTED -log 1 $ hostname set to: [HOSTNAME] diff --git a/src/tests/__isupport-clear.lib b/src/tests/__isupport-clear.lib new file mode 100644 index 0000000..dd944f9 --- /dev/null +++ b/src/tests/__isupport-clear.lib @@ -0,0 +1,5 @@ +× isupport-clear +log 1 $ isupport cleared +log 1 $ isupport:CHANTYPES set to: [#&] +log 1 $ isupport:PREFIX set to: [(ov)@+] +log 1 $ isupport:USERLEN set to: [10] diff --git a/src/tests/__no-timely-pong.lib b/src/tests/__no-timely-pong.lib new file mode 100644 index 0000000..bda6692 --- /dev/null +++ b/src/tests/__no-timely-pong.lib @@ -0,0 +1,10 @@ +insert ./__disconnect.lib +# for: disconnect0, disconnect1 +insert ./__retry-in.lib + +× no-timely-pong +servermsg 0 timeout +servermsg 0 no timely PONG from server +insert disconnect0 :-1 +1 EXIT_MSG broken: no timely PONG from server +insert disconnect1 1:-1 +1 WIN_IDS 2 +insert retry-in : +1 ? 1 diff --git a/src/tests/__retry-in.lib b/src/tests/__retry-in.lib new file mode 100644 index 0000000..316bffc --- /dev/null +++ b/src/tests/__retry-in.lib @@ -0,0 +1,2 @@ +× retry-in +log 1 $ will retry connecting in ? seconds diff --git a/src/tests/__tui.lib b/src/tests/__tui.lib deleted file mode 100644 index 6ff7ee1..0000000 --- a/src/tests/__tui.lib +++ /dev/null @@ -1,22 +0,0 @@ -× enter-unprefixed -> ? -log 0 # invalid prompt command: not prefixed by / - -× enter-unknown -> /? -log 0 # invalid prompt command: /? unknown - -× enter-help-win0 -> /help -log 0 # commands available in this window: -log 0 # /connect HOST_PORT [NICKNAME_PW] [REALNAME_USERNAME] -log 0 # /help -log 0 # /list -log 0 # /prompt_enter -log 0 # /quit -log 0 # /window TOWARDS -log 0 # /window.history.scroll DIRECTION -log 0 # /window.paste -log 0 # /window.prompt.backspace -log 0 # /window.prompt.move_cursor DIRECTION -log 0 # /window.prompt.scroll DIRECTION diff --git a/src/tests/_timeout_retries.test b/src/tests/_timeout_retries.test index 8cd00ad..17049c2 100644 --- a/src/tests/_timeout_retries.test +++ b/src/tests/_timeout_retries.test @@ -1,79 +1,44 @@ -insert ./__attempting.lib -insert ./__connected.lib -insert ./__init_clear_hostname.lib - -× identifiers -log 2 $ - nickname: foo -log 2 $ - realname: baz -log 2 $ - username: foobarbazquux -log 2 $ - password: bar - -× attempting-bazbarfoo -insert attempting : +3 HOSTNAME baz.bar.foo +insert ./__attempting-to-connected.lib +insert ./__bazbarfoo.lib +# for: attempting-bazbarfoo, connect-bazbarfoo +insert ./__conn.lib +# for: attempting, connect, connected +insert ./__cmd-disconnect.lib +insert ./__enter-list-start.lib +insert ./__no-timely-pong.lib +insert ./__retry-in.lib × fake-testing-timeout log 1 $ connection_state set to: [failed to connect: FAKE TESTING TIMEOUT] insert retry-in : +1 ? §§ -× port -log 1 $ port set to: [§] - -× conn-config -insert identifiers : +2 -insert port : +1 § ? - -× retry-in -log 1 $ will retry connecting in ? seconds - -× conns-init -insert port : +1 § §§ -log 1 $ nick_wanted set to: [foo] -log 1 $ user_wanted set to: [foobarbazquux] -log 1 $ realname set to: [baz] -log 1 $ password set to: [bar] - -× conn -insert identifiers : +2 -insert connected -log 1 > USER foobarbazquux 0 * :baz -log 1 > NICK :foo - × ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× # NB: FakeIrcConnection on any port > 10000 will fail connecting with a timeout # the TestingClient meanwhile will decrement any port of that range by 1 after # each started connection attempt -> /connect foo.bar.baz:10003 foo:bar baz:foobarbazquux -insert init-clear-hostname : +1 HOSTNAME foo.bar.baz -insert conns-init : +1 §§ 10003 +insert connect : +1 6697 10003 # check increase of retry waits -insert attempting-foobarbaz : +1 §§ 10003 -insert conn-config : +1 ? 10002 +insert attempting : +1 6697 10003 +log 1 $ port set to: [10002] insert fake-testing-timeout : +1 §§ 1 # -insert attempting-foobarbaz : +1 §§ 10002 -insert conn-config : +1 ? 10001 +insert attempting : +1 6697 10002 +log 1 $ port set to: [10001] insert fake-testing-timeout : +1 §§ 2 # -insert attempting-foobarbaz : +1 §§ 10001 -insert conn-config : +1 ? 10000 +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-foobarbaz : +1 §§ 10000 -insert conn +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? -servermsg 0 timeout -servermsg 0 no timely PONG from server -log 1 $ connection_state set to: [broken: no timely PONG from server] -insert isupport-clear -log 1 $ connection_state set to: [] -log 2 $ DISCONNECTED -insert retry-in : +1 ? 1 +insert no-timely-pong # check /disconnect aborts retry chain > /window 1 @@ -82,21 +47,18 @@ log 1 $ already disconnected, stopped connecting attempts wait 1 # connect to second server to check timed auto-retries don't activate after manual intervention -> /connect baz.bar.foo:10001 foo:bar baz:foobarbazquux -insert init-clear-hostname : +3 HOSTNAME baz.bar.foo -insert conns-init : +3 §§ 10001 -insert attempting-bazbarfoo : +3 §§ 10001 -insert conn-config : +3 ? 10000 +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 > /reconnect -insert attempting-bazbarfoo : +3 §§ 10000 -insert conn : +3 +insert attempting-bazbarfoo : +3 6697 10000 +insert connected : +3 WIN_IDS 2 wait 1 # same way ensure retry chain wasn't solely blocked by being connected -> /disconnect -log 3 > QUIT :ircplom says bye +insert cmd-disconnect : +3 wait 1 diff --git a/src/tests/caps.test b/src/tests/caps.test index 9dbabbb..0c8642f 100644 --- a/src/tests/caps.test +++ b/src/tests/caps.test @@ -1,57 +1,41 @@ -insert ./__attempting.lib -insert ./__caps_neg_empty.lib -insert ./__connected_w_pw_listing.lib -insert ./__init_clear_hostname.lib +insert ./__attempting-to-connected.lib +insert ./__connect-to-connected.lib +insert ./__caps.lib +# for: cap-msg, caps-neg-empty +insert ./__cmd-disconnect.lib +insert ./__disconnect.lib +# for: disconnect1 +insert ./__error-to-disconnect.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 +insert cmd-disconnect : +1 +insert error-to-disconnect : +0 ? Closing link: ircplom says bye × later-disconnect-to-reconnect -log 1 $ connection_state set to: [] -log 2 $ DISCONNECTED +insert disconnect1 1:-1 +1 WIN_IDS 2 > /reconnect -insert connecting +insert attempting-to-connected : +1 × disconnect-to-reconnect-clear-caps insert disconnect-init -log 1 $ caps cleared insert later-disconnect-to-reconnect × ×-------------------------- -> /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 +insert connect-to-connected # check handling of empty caps list insert caps-neg-empty > /window 2 -insert disconnect-init +insert disconnect-init :-1 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 +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: [] @@ -62,8 +46,8 @@ 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 +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] @@ -80,20 +64,20 @@ 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 : +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 +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 +insert cap-msg : +0 ??? * ACK :sasl +insert cap-msg : +0 ??? * LIST :sasl log 1 $ caps:sasl:enabled set to: [True] log 1 > CAP :END @@ -102,10 +86,10 @@ log 1 $ users:me:nick set to: [?] log 1 $ users:me:nick set to: [foo] # check NEW, DEL working after CAP :END -insert cap_msg : +0 ??? foo NEW :foo bar=baz +insert cap-msg : +0 ??? foo NEW :foo bar=baz 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 +insert cap-msg : +0 ??? foo DEL :sasl foo log 1 $ caps:foo cleared log 1 $ caps:sasl cleared diff --git a/src/tests/channels.test b/src/tests/channels.test index c7c2cb4..efb0313 100644 --- a/src/tests/channels.test +++ b/src/tests/channels.test @@ -1,6 +1,12 @@ -insert ./__attempting.lib -insert ./__caps_neg_empty.lib -insert ./__init_clear_hostname.lib +insert ./__caps.lib +# for: caps-neg-empty +insert ./__cmd-disconnect.lib +insert ./__conn.lib +# for: attempting, connected +insert ./__connect-to-connected.lib +insert ./__disconnect.lib +# for: disconnect0, disconnect1 +insert ./__error-to-disconnect.lib insert ./__servermsglogged.lib × JOIN0 @@ -40,16 +46,6 @@ log 4 $ foo!~foobarbaz@baz.bar.foo parts insert part1 : +1 CHANNEL #ch_test1 × conn-init -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 WIN_IDS $ CONNECTED -log 1 > CAP LS :302 -log 1 > USER baz 0 * :bar -log 1 > NICK :foo 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: [?] @@ -60,17 +56,11 @@ log 1 $ users:me:nick set to: [foo] log 1 > PRIVMSG #ch_test0 :TXT log 3 > [foo] TXT -× disconnect -log 1 $ connection_state set to: [EXIT_MSG] -insert isupport-clear -log 1 $ channels cleared -log 1 $ connection_state set to: [] -log 2,3,4 $ DISCONNECTED -log 1 $ users cleared - × reconnect > /reconnect -insert conn-init : +0 WIN_IDS 2,3,4 +insert attempting : +1 +insert connected : +1 WIN_IDS 2,3,4 +insert conn-init insert identifying-join-ch_test0 insert join-empty : +0 CHANNEL #ch_test0 log 3 $ residents: foo @@ -81,13 +71,8 @@ log 1 > NICK :? × ×-------------------------- -> /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 conn-init : +0 WIN_IDS 2 +insert connect-to-connected +insert conn-init # check inability to privmsg into channel not yet joined > /window 2 @@ -273,8 +258,7 @@ log 1 $ users:1 cleared # check effects of own QUIT while present in one channel insert part-ch_test1 -> /disconnect -log 1 > QUIT :ircplom says bye +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 @@ -282,14 +266,15 @@ 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 servermsglogged : +0 MSG ERROR :Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye] -insert disconnect : +1 EXIT_MSG Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye] +insert error-to-disconnect :-1 +0 ? Closing link: Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye] +insert disconnect1 : +1 WIN_IDS 2,3,4 # check /reconnect calling auto-rejoin on the one channel inhabited on previous leaving insert reconnect # check same mechanism holding on externally triggered disconnect servermsg 0 FAKE_IRC_CONN_ABORT_EXCEPTION -insert disconnect : +1 EXIT_MSG broken: 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 reconnect diff --git a/src/tests/config.test b/src/tests/config.test index 0f0ca10..dcf409b 100644 --- a/src/tests/config.test +++ b/src/tests/config.test @@ -1,21 +1,13 @@ -insert ./__attempting.lib -insert ./__connected_w_pw_listing.lib -insert ./__init_clear_hostname.lib +insert ./__conn.lib +# for: attempting, connect, connected × ×--------------------------------------------------- log 0 # Found config at tests/config.toml, reading … 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: [bar] + +insert connect 1: +1 6697 1234 log 1 $ password set to: [supersecret] -insert attempting-foobarbaz : +1 §§ 1234 -log 2 $ - nickname: foo -log 2 $ - realname: bar -log 2 $ - username: baz -insert connected_w_pw_listing : +1 PW_LISTING password: supersecret -log 1 > USER baz 0 * :bar -log 1 > NICK :foo +insert attempting :-1 +1 6697 1234 +log 2 $ - password: supersecret +insert connected : +1 WIN_IDS 2 diff --git a/src/tests/connect_disconnect_legalities.test b/src/tests/connect_disconnect_legalities.test index 520fc89..8d6b208 100644 --- a/src/tests/connect_disconnect_legalities.test +++ b/src/tests/connect_disconnect_legalities.test @@ -1,35 +1,18 @@ -insert ./__attempting.lib -insert ./__connected_w_pw_listing.lib -insert ./__init_clear_hostname.lib -insert ./__servermsglogged.lib - -× conn-error -insert servermsglogged : +0 MSG ERROR :Closing link: ??? -log 1 $ connection_state set to: [Closing link: ???] -insert isupport-clear -log 1 $ connection_state set to: [] -log 2 $ DISCONNECTED - -× 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 +insert ./__attempting-to-connected.lib +insert ./__cmd-disconnect.lib +insert ./__conn.lib +# for: connect +insert ./__conn-error.lib +insert ./__disconnect.lib +# for: disconnect1 +insert ./__error-to-disconnect.lib +insert ./__retry-in.lib × ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× # to prepare, initiate connection -> /connect foo.bar.baz foo bar:baz -insert init-clear-hostname : +1 HOSTNAME foo.bar.baz -log 1 $ port set to: [-1] -log 1 $ nick_wanted set to: [foo] -log 1 $ user_wanted set to: [baz] -log 1 $ realname set to: [bar] -log 1 $ port set to: [6697] -insert connecting +insert connect +insert attempting-to-connected # fail to reconnect while connected > /window 1 @@ -37,9 +20,8 @@ insert connecting log 1 $ not re-connecting since already connected # handle /disconnect on being connected -> /disconnect -log 1 > QUIT :ircplom says bye -insert conn-error : +0 ??? (whatever@whatever.com) [Quit: ircplom says bye] +insert cmd-disconnect +insert conn-error : +0 §§§ Closing link: (whatever@whatever.com) [Quit: ircplom says bye] # fail to disconnect when already disconnected > /disconnect @@ -47,10 +29,10 @@ log 1 $ already disconnected and not attempting connect # succeed to re-connect after disconnect > /reconnect -insert connecting +insert attempting-to-connected # allow /disconnect outside connection for auto-connect stops -insert conn-error : +0 ??? (Connection timed out) -log 1 $ will retry connecting in 1 seconds +insert conn-error : +0 §§§ Closing link: (Connection timed out) +insert retry-in : +1 ? 1 > /disconnect log 1 $ already disconnected, stopped connecting attempts diff --git a/src/tests/error_disconnects.test b/src/tests/error_disconnects.test index 3f028ef..35810df 100644 --- a/src/tests/error_disconnects.test +++ b/src/tests/error_disconnects.test @@ -1,56 +1,30 @@ -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 - -× disconnecting -insert isupport-clear -log 1 $ connection_state set to: [] -log 2 $ DISCONNECTED - -× retry -log 1 $ will retry connecting in 1 seconds - -× conn-error -insert servermsglogged : +0 MSG ERROR :? -log 1 $ connection_state set to: [?] -insert disconnecting +insert ./__attempting-to-connected.lib +insert ./__conn-error.lib +insert ./__connect-to-connected.lib +insert ./__disconnect.lib +# for: disconnect1 +insert ./__error-to-disconnect.lib +insert ./__retry-in.lib × reconnect-error-logged > /reconnect -insert connecting -insert conn-error : +0 ? XXX +insert attempting-to-connected +insert conn-error : +0 §§§ XXX × ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× # to prepare first test, initiate connected state -> /connect foo.bar.baz foo bar:baz -insert init-clear-hostname : +1 HOSTNAME foo.bar.baz -log 1 $ port set to: [-1] -log 1 $ nick_wanted set to: [foo] -log 1 $ user_wanted set to: [baz] -log 1 $ realname set to: [bar] -log 1 $ port set to: [6697] -insert connecting +insert connect-to-connected # test default ERROR handling -insert conn-error : +0 ? abc def ghi +insert conn-error : +0 §§§ abc def ghi # test ERROR regex (non-)matches > /window 1 insert reconnect-error-logged : +0 XXX Closing link: (this should not match) insert reconnect-error-logged : +0 XXX Closing link: (Connection timed out) -insert retry +insert retry-in : +1 ? 1 insert reconnect-error-logged : +0 XXX closing Link: (connection timed out) -insert retry +insert retry-in : +1 ? 1 insert reconnect-error-logged : +0 XXX Closing link: (Ping timeout: 240 seconds) -insert retry +insert retry-in : +1 ? 1 diff --git a/src/tests/pingpong.test b/src/tests/pingpong.test index 90934ee..5783169 100644 --- a/src/tests/pingpong.test +++ b/src/tests/pingpong.test @@ -1,17 +1,9 @@ -insert ./__attempting.lib -insert ./__connected_w_pw_listing.lib -insert ./__init_clear_hostname.lib +insert ./__conn.lib +# for: attempting, connected +insert ./__connect-to-connected.lib +insert ./__no-timely-pong.lib insert ./__servermsglogged.lib -× conn -insert attempting-foobarbaz : +1 §§ 6697 -log 2 $ - nickname: foo -log 2 $ - realname: baz -log 2 $ - username: foobarbazquux -insert connected_w_pw_listing : +1 PW_LISTING password: bar -log 1 > USER foobarbazquux 0 * :baz -log 1 > NICK :foo - × trigger-ping servermsg 0 timeout log 1 > PING :what's up? @@ -24,25 +16,11 @@ insert servermsglogged : +0 MSG :*.?.net NOTICE * :*** Looking up your ident... log 2 < (server) *** Looking up your ident... # another timeout instead of pong? disconnect insert trigger-ping -servermsg 0 timeout -servermsg 0 no timely PONG from server -log 1 $ connection_state set to: [broken: no timely PONG from server] -insert isupport-clear -log 1 $ connection_state set to: [] -log 2 $ DISCONNECTED -log 1 $ will retry connecting in 1 seconds +insert no-timely-pong × ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× -> /connect foo.bar.baz foo:bar baz:foobarbazquux -insert init-clear-hostname : +1 HOSTNAME foo.bar.baz -log 1 $ port set to: [-1] -log 1 $ nick_wanted set to: [foo] -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 +insert connect-to-connected # ensure we PONG properly insert servermsglogged : +0 MSG PING :? @@ -53,5 +31,6 @@ insert full-timeout # on re-connect, ensure timer cleared, i.e. only 2nd time-out will disconnect > /window 1 > /reconnect -insert conn +insert attempting +insert connected : +1 WIN_IDS 2 insert full-timeout diff --git a/src/tests/test.test b/src/tests/test.test index a33beb1..260abcb 100644 --- a/src/tests/test.test +++ b/src/tests/test.test @@ -1,25 +1,19 @@ -insert ./__attempting.lib -insert ./__connected_w_pw_listing.lib -insert ./__init_clear_hostname.lib +insert ./__bazbarfoo.lib +# for: attempting-bazbarfoo, connect-bazbarfoo +insert ./__cmd-disconnect.lib +insert ./__conn.lib +# for: attempting, connect, connected +insert ./__disconnect.lib +# for: disconnect0, disconnect1 +insert ./__enter-list-start.lib +insert ./__error-to-disconnect.lib +insert ./__isupport-clear.lib +insert ./__retry-in.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 -insert attempting-foobarbaz : +1 §§ 6697 -log 2 $ - nickname: foo -log 2 $ - realname: baz -log 2 $ - username: foobarbazquux × conn_init_1 -log 1 > USER foobarbazquux 0 * :baz -log 1 > NICK :foo # expect some NOTICE and PING to process/reply during initiation insert servernotice : +0 XXX *** Looking up your ident... @@ -27,6 +21,7 @@ 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 :? + # handle 433 insert servermsglogged : +0 MSG :*.?.net 433 * foo :Nickname already in use log 1 $ nickname already in use, trying increment @@ -34,6 +29,7 @@ log 1 > NICK :foo0 insert servermsglogged : +0 MSG :*.?.net 433 * foo0 :Nickname already in use log 1 $ nickname already in use, trying increment log 1 > NICK :foo1 + # collect server capabilities insert servermsglogged : +0 MSG :*.?.net CAP * LS : foo bar sasl=PLAIN,EXTERNAL baz cap-notify log 1 $ caps:bar:data set to: [] @@ -48,6 +44,7 @@ insert servermsglogged : +0 MSG :*.?.net CAP * ACK :sasl insert servermsglogged : +0 MSG :*.?.net CAP * LIST :cap-notify sasl log 1 $ caps:cap-notify:enabled set to: [True] log 1 $ caps:sasl:enabled set to: [True] + # authenticate via SASL, collect items of user identity log 1 $ sasl_auth_state set to: [attempting] log 1 > AUTHENTICATE :PLAIN @@ -61,10 +58,14 @@ log 1 $ users:me:host set to: [baz.bar.foo] log 1 $ sasl_account set to: [foo] insert servermsglogged : +0 MSG :foo.bar.baz 903 foo1 :SASL authentication successful log 1 $ sasl_auth_state set to: [SASL authentication successful] + # finish CAP negotation, thus login procedure log 1 > CAP :END + + × conn_init_2 + # of all pre-MOTD greeting messages, only process isupports insert servermsglogged : +0 MSG :foo.bar.baz 001 foo1 :Welcome to the foo.bar.baz network insert servermsglogged : +0 MSG :foo.bar.baz 002 foo1 :Your host is foo.bar.baz @@ -85,6 +86,7 @@ insert servermsglogged : +0 MSG :foo.bar.baz 255 foo1 :I have 100 clients and 1 insert servermsglogged : +0 MSG :foo.bar.baz 265 foo1 100 150 :Current local users 100, max 150 insert servermsglogged : +0 MSG :foo.bar.baz 266 foo1 1010 1050 :Current global users 1010, max 1050 insert servermsglogged : +0 MSG :foo.bar.baz 250 foo1 :Highest connection count: 151 (150 clients) (1080 connections received) + # collect MOTD into a single output (rather than line-by-line) insert servermsglogged : +0 MSG :foo.bar.baz 375 foo1 :- foo.bar.baz Message of the Day - insert servermsglogged : +0 MSG :foo.bar.baz 372 foo1 :- Howdy! - @@ -95,6 +97,7 @@ log 1 $ motd set to: [- Howdy! -], [- Welcome! -], [- (to this server) -] log 2 $ - Howdy! - log 2 $ - Welcome! - log 2 $ - (to this server) - + # collect user mode insert servermsglogged : +0 MSG :foo1 MODE foo1 :+Ziw log 1 $ users:me:modes set to: [+Ziw] @@ -102,12 +105,16 @@ log 1 $ users:me:modes set to: [+Ziw] insert servermsglogged : +0 MSG :SaslServ!SaslServ@services.bar.baz NOTICE foo1 :Last login from ~foobarbaz@foo.bar.baz on Jan 1 22:00:00 2021 +0000. log 3 < (SaslServ) Last login from ~foobarbaz@foo.bar.baz on Jan 1 22:00:00 2021 +0000. + + × during_conn + # test recoverable 432 > /nick @foo log 1 > NICK :@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 @@ -124,11 +131,13 @@ log 1 $ users:1:nick set to: [bar] insert servermsglogged : +0 MSG :foo.bar.baz 366 foo1 #test :End of /NAMES list. log 1 $ channels:#test:user_ids set to: [1], [me] log 4 $ residents: bar, foo1 + # deliver PRIVMSG to channel window, update sender's user+host from metadata insert servermsglogged : +0 MSG :bar!~bar@bar.bar PRIVMSG #test :hi there log 1 $ users:1:user set to: [~bar] log 1 $ users:1:host set to: [bar.bar] 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'))] @@ -137,6 +146,7 @@ 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 + # process non-self channel JOIN insert servermsglogged : +0 MSG :baz!~baz@baz.baz JOIN :#test log 1 $ users:2:nick set to: [?] @@ -145,6 +155,7 @@ log 1 $ users:2:user set to: [~baz] log 1 $ users:2:host set to: [baz.baz] 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 @@ -158,6 +169,7 @@ 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. log 1 $ channels:#testtest:user_ids set to: [2], [me] log 5 $ residents: baz, foo1 + # handle query window with known user insert servermsglogged : +0 MSG :baz!~baz@baz.baz PRIVMSG foo1 :hi there log 6 < [baz] hi there @@ -166,16 +178,19 @@ 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 < [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 $ barbar not online + # handle non-self renaming insert servermsglogged : +0 MSG :baz!~baz@baz.baz NICK :bazbaz log 1 $ users:2:nick set to: [bazbaz] log 4,5,6 $ baz!~baz@baz.baz renames bazbaz + # handle non-self PART in one of two inhabited channels, preserve identity into re-JOIN insert servermsglogged : +0 MSG :bazbaz!~baz@baz.baz PART :#test log 1 $ channels:#test:exits:2 set to: [P] @@ -185,6 +200,7 @@ log 1 $ channels:#test:exits:2 cleared insert servermsglogged : +0 MSG :bazbaz!~baz@baz.baz JOIN :#test log 1 $ channels:#test:user_ids set to: [1], [2], [me] log 4 $ bazbaz!~baz@baz.baz joins + # handle non-self PART in only inhabited channel, lose identity, re-join as new identity insert servermsglogged : +0 MSG :bar!~bar@bar.bar PART :#test log 1 $ channels:#test:exits:1 set to: [P] @@ -199,6 +215,7 @@ log 1 $ users:3:user set to: [~bar] log 1 $ users:3:host set to: [bar.bar] log 1 $ channels:#test:user_ids set to: [2], [3], [me] log 4 $ bar!~bar@bar.bar joins + # handle non-self QUIT insert servermsglogged : +0 MSG :bazbaz!~baz@baz.baz QUIT :Client Quit log 1 $ users:2:exit_msg set to: [QClient Quit] @@ -212,6 +229,7 @@ log 1 $ channels:#testtest:user_ids set to: [me] log 5 $ bazbaz!~baz@baz.baz quits: Client Quit 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] @@ -220,13 +238,14 @@ log 4 $ foo1!~foobarbaz@baz.bar.foo parts log 1 $ channels:#test:exits:me cleared log 1 $ channels:#test cleared log 1 $ users:3 cleared + # handle lack of implementation insert servermsglogged : +0 MSG foo bar baz 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 -> /disconnect -log 1 > QUIT :ircplom says bye +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 @@ -234,17 +253,13 @@ 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 1 $ channels:#testtest:exits:me cleared -insert servermsglogged : +0 MSG ERROR :Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye] -log 1 $ connection_state set to: [Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye]] -insert isupport-clear -log 1 $ caps cleared -log 1 $ channels cleared -log 1 $ connection_state set to: [] -log 2,3,4,5,6,7 $ DISCONNECTED +insert error-to-disconnect : +0 ? Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye] +insert disconnect1 :-1 +1 WIN_IDS 2,3,4,5,6,7 log 1 $ motd cleared log 1 $ sasl_account set to: [] log 1 $ sasl_auth_state set to: [] log 1 $ users cleared + # fail to send in disconnect, check alert window is command prompt window > /window 6 > /privmsg barbar test @@ -255,27 +270,22 @@ log 1 $ cannot send, connection seems closed > /privmsg #test test log 1 $ not sending, since not in channel -× disconnect -insert isupport-clear : +8 -log 8 $ connection_state set to: [] -log , $ DISCONNECTED -× ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× -# on /connect init databases, log in new windows -> /connect foo.bar.baz foo:bar baz:foobarbazquux -insert init-clear-hostname : +1 HOSTNAME foo.bar.baz +× servernotice +insert servermsglogged : +0 MSG :*.?.net NOTICE * :XXX +log 2 < (server) XXX + +× ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× -# connect with values set by /connect, init CAP negotation -log 1 $ port set to: [-1] -log 1 $ nick_wanted set to: [foo] -log 1 $ user_wanted set to: [foobarbazquux] -log 1 $ realname set to: [baz] +# on /connect init databases, log in new windows, connect with values set by /connect, init CAP negotiation +> /connect foo.bar.baz:6697 foo:bar bar:baz +insert connect 1: 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 attempting :-1 +log 2 $ - password: bar +insert connected : +1 WIN_IDS 2 insert conn_init_1 insert conn_init_2 @@ -316,24 +326,17 @@ log 1 # /window.reconnect insert during_conn # test setting up second client, but 432 irrecoverably -> /connect baz.bar.foo ?foo foo:foo -insert init-clear-hostname : +8 HOSTNAME baz.bar.foo -log 8 $ port set to: [-1] -log 8 $ nick_wanted set to: [?foo] -log 8 $ user_wanted set to: [foo] -log 8 $ realname set to: [foo] -log 8 $ port set to: [6697] -insert attempting-6697 : +8 HOSTNAME baz.bar.foo +> /connect baz.bar.foo:6697 ?foo bar:baz +insert connect-bazbarfoo 1: +8 [foo] [?foo] +insert attempting-bazbarfoo :2 +8 log 9 $ - nickname: ?foo -log 9 $ - realname: foo -log 9 $ - username: foo -insert connected_w_pw_listing : +8 PW_LISTING no password -log 8 > USER foo 0 * :foo +insert attempting-bazbarfoo 3: +9 +insert connected :-1 +8 WIN_IDS 2 log 8 > NICK :?foo servermsg 1 :*.?.net 432 * ?foo :Erroneous nickname log 8 < :*.?.net 432 * ?foo :Erroneous nickname -insert disconnect :-1 +8 -log 9 $ DISCONNECTED +insert isupport-clear : +8 +insert disconnect1 1:-1 +8 WIN_IDS 2 log 8 $ nickname refused for bad format, giving up # zero unread-lines counts in status line so it won't explode simulated screen @@ -348,24 +351,12 @@ log 8 $ nickname refused for bad format, giving up > /window 1 # test failing third connection -> /connect baz.baz.baz baz baz:baz -insert init-clear-hostname : +10 HOSTNAME baz.baz.baz -log 10 $ port set to: [-1] -log 10 $ nick_wanted set to: [baz] -log 10 $ user_wanted set to: [baz] -log 10 $ realname set to: [baz] -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 -insert connected_w_pw_listing : +10 PW_LISTING no password -log 10 > USER baz 0 * :baz -log 10 > NICK :baz +insert connect : +10 foo.bar.baz baz.baz.baz +insert attempting : +10 foo.bar.baz baz.baz.baz +insert connected : +10 WIN_IDS 2 servermsg 2 FAKE_IRC_CONN_ABORT_EXCEPTION -log 10 $ connection_state set to: [broken: FAKE_IRC_CONN_ABORT_EXCEPTION] -insert disconnect :-1 +10 -log 11 $ DISCONNECTED +insert disconnect0 :-1 +10 EXIT_MSG broken: FAKE_IRC_CONN_ABORT_EXCEPTION +insert disconnect1 1:-1 +10 WIN_IDS 2 log 10 $ will retry connecting in 1 seconds > /window 10 > /disconnect @@ -386,13 +377,11 @@ log 10 $ already disconnected, stopped connecting attempts # 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 +insert attempting :-1 log 2 $ - password: bar -log 1 $ connection_state set to: [connected] -log 2,3,4,5,6,7 $ CONNECTED -log 1 > CAP LS :302 +insert connected : +1 WIN_IDS 2,3,4,5,6,7 insert conn_init_1 insert conn_init_2 :2 log 1 > JOIN :#testtest insert conn_init_2 2: -insert during_conn : +0 +insert during_conn diff --git a/src/tests/tui_draw.test b/src/tests/tui_draw.test index e62cd90..e1994de 100644 --- a/src/tests/tui_draw.test +++ b/src/tests/tui_draw.test @@ -1,9 +1,8 @@ -insert ./__attempting.lib -insert ./__connected_w_pw_listing.lib -insert ./__init_clear_hostname.lib +insert ./__connect-to-connected.lib +insert ./__enter-list-start.lib +insert ./__enter_misc.lib +# for: enter-help-win0, enter-unknown, enter-unprefixed insert ./__servermsglogged.lib -insert ./__tui.lib -insert ./__enter_list.lib × lines-empty-1 line 0 on_black,bright_white §§ @@ -137,48 +136,47 @@ insert line-server-log : +5 ? caps cleared insert line-server-log : +6 ? users cleared insert line-server-log : +7 ? channels cleared insert line-server-log : +8 ? hostname set to: [foo.bar.baz] -insert line-server-log : +9 ? port set to: [-1] +insert line-server-log : +9 ? port set to: [6697] insert line-server-log : +10 ? nick_wanted set to: [foo] insert line-server-log : +11 ? user_wanted set to: [baz] insert line-server-log : +12 ? realname set to: [bar] -insert line-server-log : +13 ? port set to: [6697] -insert line-server-log : +14 ? connection_state set to: [connecting] -insert line-server-log : +15 ? connection_state set to: [connected] -insert line-client-msg : +16 ? CAP LS :302 -insert line-client-msg : +17 ? USER baz 0 * :bar -insert line-client-msg : +18 ? NICK :foo -insert lines-ping-pong : +19 ?? ? -insert line-ping : +21 ? 9 123456789 123456789 123456789 123456789 123456789 123456789§§ -insert line-bright-white : +22 ? 123456789 123456789 -insert line-pong : +23 ? 9 123456789 123456789 123456789 123456789 123456789 123456789§§ -insert line-bright-green : +24 ? 123456789 123456789 -insert lines-ping-pong : +25 ?? foo -insert lines-ping-pong : +27 ?? bar -insert lines-ping-pong : +29 ?? baz -insert lines-ping-pong : +31 ?? 0 -insert lines-ping-pong : +33 ?? 1 -insert lines-ping-pong : +35 ?? 2 -insert lines-ping-pong : +37 ?? 3 -insert lines-ping-pong : +39 ?? 4 -insert lines-ping-pong : +41 ?? 5 -insert lines-ping-pong : +43 ?? 6 -insert lines-ping-pong : +45 ?? 7 -insert lines-ping-pong : +47 ?? 8 -insert lines-ping-pong : +49 ?? 9 -insert lines-ping-pong : +51 ?? 10 -insert lines-ping-pong : +53 ?? 11 -insert lines-ping-pong : +55 ?? 12 -insert lines-ping-pong : +57 ?? 13 -insert lines-ping-pong : +59 ?? 14 -insert lines-ping-pong : +61 ?? 15 -insert lines-ping-pong : +63 ?? 16 -insert lines-ping-pong : +65 ?? 17 -insert lines-ping-pong : +67 ?? 18 -insert lines-ping-pong : +69 ?? 19 -insert lines-ping-pong : +71 ?? 20 -insert lines-ping-pong : +73 ?? 21 -insert lines-ping-pong : +75 ?? 22 -insert lines-ping-pong : +77 ?? 23 +insert line-server-log : +13 ? connection_state set to: [connecting] +insert line-server-log : +14 ? connection_state set to: [connected] +insert line-client-msg : +15 ? CAP LS :302 +insert line-client-msg : +16 ? USER baz 0 * :bar +insert line-client-msg : +17 ? NICK :foo +insert lines-ping-pong : +18 ?? ? +insert line-ping : +20 ? 9 123456789 123456789 123456789 123456789 123456789 123456789§§ +insert line-bright-white : +21 ? 123456789 123456789 +insert line-pong : +22 ? 9 123456789 123456789 123456789 123456789 123456789 123456789§§ +insert line-bright-green : +23 ? 123456789 123456789 +insert lines-ping-pong : +24 ?? foo +insert lines-ping-pong : +26 ?? bar +insert lines-ping-pong : +28 ?? baz +insert lines-ping-pong : +30 ?? 0 +insert lines-ping-pong : +32 ?? 1 +insert lines-ping-pong : +34 ?? 2 +insert lines-ping-pong : +36 ?? 3 +insert lines-ping-pong : +38 ?? 4 +insert lines-ping-pong : +40 ?? 5 +insert lines-ping-pong : +42 ?? 6 +insert lines-ping-pong : +44 ?? 7 +insert lines-ping-pong : +46 ?? 8 +insert lines-ping-pong : +48 ?? 9 +insert lines-ping-pong : +50 ?? 10 +insert lines-ping-pong : +52 ?? 11 +insert lines-ping-pong : +54 ?? 12 +insert lines-ping-pong : +56 ?? 13 +insert lines-ping-pong : +58 ?? 14 +insert lines-ping-pong : +60 ?? 15 +insert lines-ping-pong : +62 ?? 16 +insert lines-ping-pong : +64 ?? 17 +insert lines-ping-pong : +66 ?? 18 +insert lines-ping-pong : +68 ?? 19 +insert lines-ping-pong : +70 ?? 20 +insert lines-ping-pong : +72 ?? 21 +insert lines-ping-pong : +74 ?? 22 +insert lines-ping-pong : +76 ?? 23 × ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× @@ -351,29 +349,16 @@ insert line-scrolldown : +21 XXXXXX [25] v insert lines-status-prompt-start : +22 X123456789X123456789X =============([(0:1)] # check that triggering creation of new window with new lines adds it to status, with unread-lines count -> /connect foo.bar.baz foo bar:baz -insert init-clear-hostname : +1 HOSTNAME foo.bar.baz -log 1 $ port set to: [-1] -log 1 $ nick_wanted set to: [foo] -log 1 $ user_wanted set to: [baz] -log 1 $ realname set to: [bar] -log 1 $ port set to: [6697] -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 +insert connect-to-connected insert lines-empty :20 insert history_0 :1 +20 insert line-scrolldown : +21 XXXXXX [25] v -insert lines-status-prompt-start : +22 X123456789X123456789X ([(0:1)] (1:19) (2:7) +insert lines-status-prompt-start : +22 X123456789X123456789X ([(0:1)] (1:18) (2:7) # check switch to other window, updates to status line (movement of brackets, clearing of own unread-lines count) > /window 1 -insert lines-empty :3 -insert history_1 :19 +3 +insert lines-empty :4 +insert history_1 :18 +4 insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====((0:1) [1] (2:7) # check switch-back to window 0, retaining clearing of window 1's unread-lines count @@ -413,8 +398,8 @@ insert lines-status-prompt-start : +22 X123456789X123456789X =========([0] 1 (2: # check that second switch to new window, previously left on bottom of history, establishes bookmark at bottom of log > /window 1 -insert lines-empty :2 -insert history_1 :19 +2 +insert lines-empty :3 +insert history_1 :18 +3 insert line-bookmark : +21 insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) @@ -443,22 +428,22 @@ insert lines-status-prompt-start : +22 X123456789X123456789X =====([0] (1:4) (2: # check that switching to window with new lines, but left scroll-to-bottom, keeps the scroll-to-bottom, keeps bookmark after last line previously seen there > /window 1 -insert history_1 4:19 +0 +insert history_1 3:18 +0 insert line-bookmark : +15 -insert history_1 19:25 +16 +insert history_1 18:24 +16 insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) # check that growth below scroll does not by itself re-position bookmark in history > /window.history.scroll up insert ping-pong : +0 ? foo -insert lines-empty :6 -insert history_1 0:15 +6 +insert lines-empty :7 +insert history_1 0:14 +7 insert line-scrolldown : +21 XXXXXX [10] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:2)] (2:7) > /window.history.scroll down -insert history_1 5:19 +0 +insert history_1 4:18 +0 insert line-bookmark : +14 -insert history_1 19:25 +15 +insert history_1 18:24 +15 insert line-scrolldown : +21 XXXXXX [2] vv insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:2)] (2:7) @@ -468,7 +453,7 @@ insert history_0 11:32 +0 insert line-bookmark : +21 insert lines-status-prompt-start : +22 X123456789X123456789X =====([0] (1:2) (2:7) > /window 1 -insert history_1 5:25 +0 +insert history_1 4:24 +0 insert line-bookmark : +20 insert line-scrolldown : +21 XXXXXX [2] vv insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:2)] (2:7) @@ -480,15 +465,15 @@ insert history_0 11:32 +0 insert line-bookmark : +21 insert lines-status-prompt-start : +22 X123456789X123456789X =====([0] (1:4) (2:7) > /window 1 -insert history_1 5:25 +0 +insert history_1 4:24 +0 insert line-bookmark : +20 insert line-scrolldown : +21 XXXXXX [4] vv insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:4)] (2:7) # check same applies when leaving affected window with bookmark out-of-sight > /window.history.scroll up -insert lines-empty :6 -insert history_1 :15 +6 +insert lines-empty :7 +insert history_1 :14 +7 insert line-scrolldown : +21 XXXXXX [12] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:4)] (2:7) > /window 0 @@ -497,46 +482,46 @@ insert history_0 11:32 +0 insert line-bookmark : +21 insert lines-status-prompt-start : +22 X123456789X123456789X =====([0] (1:6) (2:7) > /window 1 -insert lines-empty :6 -insert history_1 :15 +6 +insert lines-empty :7 +insert history_1 :14 +7 insert line-scrolldown : +21 XXXXXX [14] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:6)] (2:7) > /window.history.scroll down -insert history_1 5:25 +0 +insert history_1 4:24 +0 insert line-bookmark : +20 insert line-scrolldown : +21 XXXXXX [6] vv insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:6)] (2:7) > /window.history.scroll down -insert history_1 10:25 +0 +insert history_1 9:24 +0 insert line-bookmark : +15 -insert history_1 25:31 +16 +insert history_1 24:30 +16 insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) # check log growth beyond max depth only remarkable after scrolling up to limit insert ping-pong : +0 ? 0 -insert history_1 12:25 +0 +insert history_1 11:24 +0 insert line-bookmark : +13 -insert history_1 25:33 +14 +insert history_1 24:32 +14 insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) > /window.history.scroll up -insert history_1 2:23 +0 +insert history_1 1:22 +0 insert line-scrolldown : +21 XXXXXX [9] vv insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) > /window.history.scroll up insert lines-empty :10 -insert history_1 1:12 +10 +insert history_1 :11 +10 insert line-scrolldown : +21 XXXXXX [19] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) > /window.history.scroll up insert lines-empty :20 -insert history_1 1:2 +20 +insert history_1 :1 +20 insert line-scrolldown : +21 XXXXXX [29] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) # check cut-off log growth seen from topmost scroll not affecting scrolldown count, but unread-lines status insert ping-pong : +0 ? 0 insert lines-empty :20 -insert history_1 3:4 +20 +insert history_1 2:3 +20 insert line-scrolldown : +21 XXXXXX [29] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:2)] (2:7) @@ -567,50 +552,50 @@ insert lines-status-prompt-start : +22 X123456789X123456789X ====([0] (1:32) (2: # check switching into window scrolled-top with more unread lines than max log depth shrinks former to latter, and scrolling down no bookmark is to be found > /window 1 insert lines-empty :20 -insert history_1 33:34 +20 +insert history_1 32:33 +20 insert line-scrolldown : +21 XXXXXX [29] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X ====(0 [(1:29)] (2:7) > /window.history.scroll down insert lines-empty :9 -insert history_1 33:45 +9 +insert history_1 32:44 +9 insert line-scrolldown : +21 XXXXXX [18] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X ====(0 [(1:18)] (2:7) > /window.history.scroll down -insert history_1 35:56 +0 +insert history_1 34:55 +0 insert line-scrolldown : +21 XXXXXX [7] vv insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:7)] (2:7) > /window.history.scroll down -insert history_1 41:61 +0 +insert history_1 40:60 +0 insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) # check bookmark remains absent with log growing while scrolled to bottom, … insert ping-pong : +0 ? 16 -insert history_1 43:63 +0 +insert history_1 42:62 +0 insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) # … as well as if further growth happens below scroll > /window.history.scroll up insert lines-empty :2 -insert history_1 35:54 +2 +insert history_1 34:53 +2 insert line-scrolldown : +21 XXXXXX [11] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) insert ping-pong : +0 ? 17 insert lines-empty :4 -insert history_1 37:54 +4 +insert history_1 36:53 +4 insert line-scrolldown : +21 XXXXXX [13] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:2)] (2:7) > /window.history.scroll down -insert history_1 44:65 +0 +insert history_1 43:64 +0 insert line-scrolldown : +21 XXXXXX [2] vv insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:2)] (2:7) > /window.history.scroll down -insert history_1 45:67 +0 +insert history_1 44:66 +0 insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) # check unread-lines status not growing beyond max log if within active window, and … > /window.history.scroll up insert lines-empty :2 -insert history_1 37:54 +2 +insert history_1 36:53 +2 insert line-scrolldown : +21 XXXXXX [11] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) insert ping-pong : +0 ? 18 @@ -629,7 +614,7 @@ insert ping-pong : +0 ? 30 insert ping-pong : +0 ? 31 insert ping-pong : +0 ? 32 insert lines-empty :20 -insert history_1 67:68 +20 +insert history_1 66:67 +20 insert line-scrolldown : +21 XXXXXX [29] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X ====(0 [(1:29)] (2:7) @@ -640,14 +625,14 @@ insert line-bookmark : +21 insert lines-status-prompt-start : +22 X123456789X123456789X ====([0] (1:29) (2:7) > /window 1 insert lines-empty :19 -insert history_1 67:68 +19 +insert history_1 66:67 +19 insert line-bookmark : +20 insert line-scrolldown : +21 XXXXXX [29] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X ====(0 [(1:29)] (2:7) > /window.history.scroll down insert lines-empty :8 -insert history_1 67:68 +8 +insert history_1 66:67 +8 insert line-bookmark : +9 -insert history_1 68:79 +10 +insert history_1 67:78 +10 insert line-scrolldown : +21 XXXXXX [18] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X ====(0 [(1:18)] (2:7) diff --git a/src/tests/tui_line_formattings.test b/src/tests/tui_line_formattings.test index 3b03280..4ecb885 100644 --- a/src/tests/tui_line_formattings.test +++ b/src/tests/tui_line_formattings.test @@ -1,7 +1,5 @@ -insert ./__attempting.lib -insert ./__connected_w_pw_listing.lib +insert ./__connect-to-connected.lib insert ./__servermsglogged.lib -insert ./__init_clear_hostname.lib × servermsglogged-and-line-unwrapped insert servermsglogged : +0 MSG XXX @@ -9,20 +7,7 @@ line 21 on_black,bright_white < §§:§§:§§ XXX§§ × ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× -> /connect foo.bar.baz foo bar:baz -insert init-clear-hostname : +1 HOSTNAME foo.bar.baz -log 1 $ port set to: [-1] -log 1 $ nick_wanted set to: [foo] -log 1 $ user_wanted set to: [baz] -log 1 $ realname set to: [bar] -log 1 $ port set to: [6697] -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 +insert connect-to-connected > /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: [?] diff --git a/src/tests/tui_prompt_basics.test b/src/tests/tui_prompt_basics.test index c7f948a..1a0d1b6 100644 --- a/src/tests/tui_prompt_basics.test +++ b/src/tests/tui_prompt_basics.test @@ -1,6 +1,7 @@ -# BASIC TUI PROMPT TESTS -insert ./__tui.lib -insert ./__enter_list.lib +insert ./__enter-list-start.lib +insert ./__enter_misc.lib +# for: enter-help-win0, enter-unknown, enter-unprefixed + × ×--------------------------- # nothing should happen on empty command input