home · contact · privacy
Refactor tests.
authorChristian Heller <c.heller@plomlompom.de>
Sat, 8 Nov 2025 06:12:25 +0000 (07:12 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Sat, 8 Nov 2025 06:12:25 +0000 (07:12 +0100)
14 files changed:
src/ircplom/testing.py
src/tests/__enter_list.lib [new file with mode: 0644]
src/tests/__init_clear_hostname.lib [new file with mode: 0644]
src/tests/__servermsglogged.lib [new file with mode: 0644]
src/tests/__tui.lib [new file with mode: 0644]
src/tests/_timeout_retries.test
src/tests/config.test
src/tests/connect_disconnect_legalities.test
src/tests/error_disconnects.test
src/tests/pingpong.test
src/tests/test.test
src/tests/tui_draw.test
src/tests/tui_line_formattings.test
src/tests/tui_prompt_basics.test

index f48bb4502934c25076cfb6f8f0ca4a115b86fa42..a8026a9ce13e372690a73e82af4510ecef5a216b 100644 (file)
@@ -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 (file)
index 0000000..12d7bfa
--- /dev/null
@@ -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 (file)
index 0000000..f48be66
--- /dev/null
@@ -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 (file)
index 0000000..b2f21da
--- /dev/null
@@ -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 (file)
index 0000000..6ff7ee1
--- /dev/null
@@ -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
index 115ae5f323c25624ea5ceef747385b13046ffa26..f45c193fa459607013fac5da3c364b4752030bf9 100644 (file)
@@ -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
index 7784cde711757c9116e028e266b42275d5294d3c..97805905a74e185cb85a68ccb1d62872ad4777bb 100644 (file)
@@ -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]
index a07fae4a25815da8c16f126f0a30b774f872c1b1..7d7cc7d2c01d99946a86f4fb21c552da3cec03b9 100644 (file)
@@ -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]
index 04e4e50a1f6aaa809504976f2227ca3bb53aa977..f24cb79c0c1f525d5ef01738791a325ab83599f4 100644 (file)
@@ -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]
index 7b644754751180842a0aea85d04fe0a21af685aa..5cabfa7081c15d676e16534f8b4ff71ad3f12396 100644 (file)
@@ -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]
index 5efec3f97de0e6108c9e617f29c665f97426043a..39ded2583fa6dbbebb6a759e955d3bf434a82607 100644 (file)
@@ -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]
index dc09d93e9ca515498ca6710f7f3851e9a2c04d02..1dcb21d3da37f7273f6c46d26379cf6a5aba098a 100644 (file)
@@ -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
index cc4dd0e274d5d596ecb9715cdc8ca789642db2ff..69217a532fa2cb9bc4173a0644c4c41114365189 100644 (file)
@@ -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]
index 261d980ad852417da9b6dc5531fa9e935b8ed826..c7f948ade745cde6ad49b1e1f9c8095c64473b80 100644 (file)
@@ -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