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], ...]],
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 = ''
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, ...]:
--- /dev/null
+× enter-list-start
+> /list
+log 0 # windows available via /window:
+log 0 # 0) :start
--- /dev/null
+× 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]
--- /dev/null
+× servermsglogged
+servermsg 0 MSG
+log 1 < MSG
--- /dev/null
+× 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
-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
# 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
# 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
-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]
-insert ./misc.lib
+insert ./__init_clear_hostname.lib
+insert ./__servermsglogged.lib
× conn-error
insert servermsglogged : +0 MSG ERROR :Closing link: ???
# 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]
-insert ./misc.lib
+insert ./__init_clear_hostname.lib
+insert ./__servermsglogged.lib
× connecting
log 1 $ connection_state set to: [connecting]
# 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]
-insert ./misc.lib
+insert ./__init_clear_hostname.lib
+insert ./__servermsglogged.lib
× conn
log 1 $ connection_state set to: [connecting]
× ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
> /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]
-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]
# 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]
# 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
# 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]
# 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]
-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 §§
× 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 :?
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]
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
# 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]
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
-insert ./misc.lib
+insert ./__servermsglogged.lib
+insert ./__init_clear_hostname.lib
× servermsglogged-and-line-unwrapped
insert servermsglogged : +0 MSG 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]
# 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