From: Christian Heller Date: Sat, 8 Nov 2025 06:12:25 +0000 (+0100) Subject: Refactor tests. X-Git-Url: https://plomlompom.com/repos/task?a=commitdiff_plain;h=76b18ffa864cccb0cd5a51276df2f7ddf1ab8104;p=ircplom Refactor tests. --- diff --git a/src/ircplom/testing.py b/src/ircplom/testing.py index f48bb45..a8026a9 100644 --- a/src/ircplom/testing.py +++ b/src/ircplom/testing.py @@ -202,9 +202,6 @@ class _Playbook: if line.rstrip() and not line.startswith(_MARK_COMMENT)] - self._idx = 0 - self._lines_t = lines_t_from_file(path) - def insert(idx_str: str, insert_args: tuple[str, ...], fragments: dict[str, tuple[tuple[str, str], ...]], @@ -267,6 +264,7 @@ class _Playbook: bump_int_fields(int(insert_args[2])) return [(c[0], c[1]) for c in candidates] + self._lines_t = lines_t_from_file(path) while True: fragments: dict[str, tuple[tuple[str, str], ...]] = {} anchor = '' @@ -305,7 +303,10 @@ class _Playbook: break for idx_info, line in self._lines_t[:fragments_cutoff + 1]: self._line_log_and_parse(idx_info, line) + # NB: To start playback past fragments section, could move ._idx there; + # but .ensure_has_started can easier test unchangedness if by .idx==0. self._lines_t = self._lines_t[fragments_cutoff + 1:] + self._idx = 0 @staticmethod def _args_for_cmd(cmd_name: str, remains: str) -> tuple[str, ...]: diff --git a/src/tests/__enter_list.lib b/src/tests/__enter_list.lib new file mode 100644 index 0000000..12d7bfa --- /dev/null +++ b/src/tests/__enter_list.lib @@ -0,0 +1,4 @@ +× enter-list-start +> /list +log 0 # windows available via /window: +log 0 # 0) :start diff --git a/src/tests/__init_clear_hostname.lib b/src/tests/__init_clear_hostname.lib new file mode 100644 index 0000000..f48be66 --- /dev/null +++ b/src/tests/__init_clear_hostname.lib @@ -0,0 +1,13 @@ +× 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/__servermsglogged.lib b/src/tests/__servermsglogged.lib new file mode 100644 index 0000000..b2f21da --- /dev/null +++ b/src/tests/__servermsglogged.lib @@ -0,0 +1,3 @@ +× servermsglogged +servermsg 0 MSG +log 1 < MSG diff --git a/src/tests/__tui.lib b/src/tests/__tui.lib new file mode 100644 index 0000000..6ff7ee1 --- /dev/null +++ b/src/tests/__tui.lib @@ -0,0 +1,22 @@ +× 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 115ae5f..f45c193 100644 --- a/src/tests/_timeout_retries.test +++ b/src/tests/_timeout_retries.test @@ -1,12 +1,4 @@ -insert ./misc.lib - -× clientwin-init -insert isupport-clear : +1 -log 1 $ caps cleared -log 1 $ users cleared -log 1 $ channels cleared -log , $ DISCONNECTED -log 1 $ hostname set to: [?] +insert ./__init_clear_hostname.lib × identifiers log 2 $ - nickname: foo @@ -62,7 +54,7 @@ log 1 > NICK :foo # 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 clientwin-init : +1 ? foo.bar.baz +insert init-clear-hostname : +1 HOSTNAME foo.bar.baz insert conns-init : +1 §§ 10003 # check increase of retry waits @@ -101,7 +93,7 @@ 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 clientwin-init : +3 ? baz.bar.foo +insert init-clear-hostname : +3 HOSTNAME baz.bar.foo insert conns-init : +3 §§ 10001 insert attempting-bazbarfoo : +3 §§ 10001 insert conn-config : +3 ? 10000 diff --git a/src/tests/config.test b/src/tests/config.test index 7784cde..9780590 100644 --- a/src/tests/config.test +++ b/src/tests/config.test @@ -1,15 +1,10 @@ -insert ./misc.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 isupport-clear -log 1 $ caps cleared -log 1 $ users cleared -log 1 $ channels cleared -log , $ DISCONNECTED -log 1 $ hostname set to: [irc.test0.net] +insert init-clear-hostname : +1 HOSTNAME irc.test0.net log 1 $ port set to: [1234] log 1 $ nick_wanted set to: [foo] log 1 $ user_wanted set to: [baz] diff --git a/src/tests/connect_disconnect_legalities.test b/src/tests/connect_disconnect_legalities.test index a07fae4..7d7cc7d 100644 --- a/src/tests/connect_disconnect_legalities.test +++ b/src/tests/connect_disconnect_legalities.test @@ -1,4 +1,5 @@ -insert ./misc.lib +insert ./__init_clear_hostname.lib +insert ./__servermsglogged.lib × conn-error insert servermsglogged : +0 MSG ERROR :Closing link: ??? @@ -24,12 +25,7 @@ log 1 > NICK :foo # to prepare, initiate connection > /connect foo.bar.baz foo bar:baz -insert isupport-clear -log 1 $ caps cleared -log 1 $ users cleared -log 1 $ channels cleared -log , $ DISCONNECTED -log 1 $ hostname set to: [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] diff --git a/src/tests/error_disconnects.test b/src/tests/error_disconnects.test index 04e4e50..f24cb79 100644 --- a/src/tests/error_disconnects.test +++ b/src/tests/error_disconnects.test @@ -1,4 +1,5 @@ -insert ./misc.lib +insert ./__init_clear_hostname.lib +insert ./__servermsglogged.lib × connecting log 1 $ connection_state set to: [connecting] @@ -35,12 +36,7 @@ insert conn-error : +0 ? XXX # to prepare first test, initiate connected state > /connect foo.bar.baz foo bar:baz -insert isupport-clear -log 1 $ caps cleared -log 1 $ users cleared -log 1 $ channels cleared -log , $ DISCONNECTED -log 1 $ hostname set to: [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] diff --git a/src/tests/pingpong.test b/src/tests/pingpong.test index 7b64475..5cabfa7 100644 --- a/src/tests/pingpong.test +++ b/src/tests/pingpong.test @@ -1,4 +1,5 @@ -insert ./misc.lib +insert ./__init_clear_hostname.lib +insert ./__servermsglogged.lib × conn log 1 $ connection_state set to: [connecting] @@ -36,12 +37,7 @@ log 1 $ will retry connecting in 1 seconds × ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× > /connect foo.bar.baz foo:bar baz:foobarbazquux -insert isupport-clear -log 1 $ caps cleared -log 1 $ users cleared -log 1 $ channels cleared -log , $ DISCONNECTED -log 1 $ hostname set to: [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: [foobarbazquux] diff --git a/src/tests/test.test b/src/tests/test.test index 5efec3f..39ded25 100644 --- a/src/tests/test.test +++ b/src/tests/test.test @@ -1,16 +1,11 @@ -insert ./misc.lib +insert ./__init_clear_hostname.lib +insert ./__servermsglogged.lib +insert ./__enter_list.lib × servernotice insert servermsglogged : +0 MSG :*.?.net NOTICE * :XXX log 2 < (server) XXX -× standard-clear -insert isupport-clear : +1 -log 1 $ caps cleared -log 1 $ users cleared -log 1 $ channels cleared -log , $ DISCONNECTED - × conn_init_0 log 1 $ port set to: [6697] log 1 $ connection_state set to: [connecting] @@ -269,10 +264,9 @@ log , $ DISCONNECTED # on /connect init databases, log in new windows > /connect foo.bar.baz foo:bar baz:foobarbazquux -insert standard-clear +insert init-clear-hostname : +1 HOSTNAME foo.bar.baz # connect with values set by /connect, init CAP negotation -log 1 $ hostname set to: [foo.bar.baz] log 1 $ port set to: [-1] log 1 $ nick_wanted set to: [foo] log 1 $ user_wanted set to: [foobarbazquux] @@ -286,9 +280,7 @@ insert conn_init_2 # check difference in available commands when switching to client window > /join #test log 0 # invalid prompt command: /join unknown -> /list -log 0 # windows available via /window: -log 0 # 0) :start +insert enter-list-start log 0 # 1) foo.bar.baz:debug log 0 # 2) foo.bar.baz:server log 0 # 3) foo.bar.baz/SaslServ @@ -323,8 +315,7 @@ insert during_conn # test setting up second client, but 432 irrecoverably > /connect baz.bar.foo ?foo foo:foo -insert standard-clear : +8 -log 8 $ hostname set to: [baz.bar.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] @@ -357,8 +348,7 @@ log 8 $ nickname refused for bad format, giving up # test failing third connection > /connect baz.baz.baz baz baz:baz -insert standard-clear : +10 -log 10 $ hostname set to: [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] diff --git a/src/tests/tui_draw.test b/src/tests/tui_draw.test index dc09d93..1dcb21d 100644 --- a/src/tests/tui_draw.test +++ b/src/tests/tui_draw.test @@ -1,4 +1,7 @@ -insert ./misc.lib +insert ./__init_clear_hostname.lib +insert ./__servermsglogged.lib +insert ./__tui.lib +insert ./__enter_list.lib × lines-empty-1 line 0 on_black,bright_white §§ @@ -84,10 +87,6 @@ line 0 on_black,bright_green > §§:§§:§§ ?§§ × line-cal line 0 on_black,bright_white 20§§-§§-§§ §§ -× enter-unknown -> /? -log 0 # invalid prompt command: /? unknown - × ping-pong insert servermsglogged : +0 MSG PING :? log 1 > PONG :? @@ -198,8 +197,7 @@ insert lines-empty insert lines-status-prompt-start : +22 X123456789X123456789X =================([0] # non-empty command input starts log at bottom, with date above it -> foo -log 0 # invalid prompt command: not prefixed by / +insert enter-unprefixed : +0 ? foo insert lines-empty :20 insert history_0 :2 +20 insert lines-status-prompt-start : +22 X123456789X123456789X =================([0] @@ -240,19 +238,7 @@ insert lines-empty :20 insert history_0 :1 +20 insert line-scrolldown : +21 XXXXXX [2] vv insert lines-status-prompt-start : +22 X123456789X123456789X =================([0] -> /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 +insert enter-help-win0 insert lines-empty :20 insert history_0 :1 +20 insert line-scrolldown : +21 XXXXXX [14] v @@ -364,12 +350,7 @@ 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 isupport-clear -log 1 $ caps cleared -log 1 $ users cleared -log 1 $ channels cleared -log , $ DISCONNECTED -log 1 $ hostname set to: [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] @@ -446,9 +427,7 @@ insert line-bookmark : +21 insert lines-status-prompt-start : +22 X123456789X123456789X =========([0] 1 (2:7) # check new lines push bookmark up -> /list -log 0 # windows available via /window: -log 0 # 0) :start +insert enter-list-start log 0 # 1) foo.bar.baz:debug log 0 # 2) foo.bar.baz:server insert history_0 11:28 +0 diff --git a/src/tests/tui_line_formattings.test b/src/tests/tui_line_formattings.test index cc4dd0e..69217a5 100644 --- a/src/tests/tui_line_formattings.test +++ b/src/tests/tui_line_formattings.test @@ -1,4 +1,5 @@ -insert ./misc.lib +insert ./__servermsglogged.lib +insert ./__init_clear_hostname.lib × servermsglogged-and-line-unwrapped insert servermsglogged : +0 MSG XXX @@ -7,12 +8,7 @@ line 21 on_black,bright_white < §§:§§:§§ XXX§§ × ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× > /connect foo.bar.baz foo bar:baz -insert isupport-clear -log 1 $ caps cleared -log 1 $ users cleared -log 1 $ channels cleared -log , $ DISCONNECTED -log 1 $ hostname set to: [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] diff --git a/src/tests/tui_prompt_basics.test b/src/tests/tui_prompt_basics.test index 261d980..c7f948a 100644 --- a/src/tests/tui_prompt_basics.test +++ b/src/tests/tui_prompt_basics.test @@ -1,35 +1,22 @@ # BASIC TUI PROMPT TESTS +insert ./__tui.lib +insert ./__enter_list.lib +× ×--------------------------- # nothing should happen on empty command input > # expected complaints on wrong command inputs -> foo -log 0 # invalid prompt command: not prefixed by / -> /foo -log 0 # invalid prompt command: /foo unknown +insert enter-unprefixed : +0 ? foo +insert enter-unknown : +0 ? foo > /help foo log 0 # invalid prompt command: /help given argument(s) while none expected > /window log 0 # invalid prompt command: /window too few arguments (given 0, need 1) # some simple expected command successes -> /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 -> /list -log 0 # windows available via /window: -log 0 # 0) :start +insert enter-help-win0 +insert enter-list-start # should probably not be available at all by explicit prompt writing, but for now this be the expected behavior … > /prompt_enter