From: Christian Heller Date: Fri, 7 Nov 2025 20:30:46 +0000 (+0100) Subject: In testing line replacements also replace within fragments section. X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/process_descriptions?a=commitdiff_plain;h=72768e9884449edcdae7a2352b807aec83888076;p=ircplom In testing line replacements also replace within fragments section. --- diff --git a/src/ircplom/testing.py b/src/ircplom/testing.py index 8d1e7e8..4f56c18 100644 --- a/src/ircplom/testing.py +++ b/src/ircplom/testing.py @@ -259,35 +259,41 @@ class _Playbook: bump_int_fields(int(insert_args[2])) return [(c[0], c[1]) for c in candidates] - fragments: dict[str, tuple[tuple[str, str], ...]] = {} - anchor = '' - fragment: list[tuple[str, str]] = [] - fragments_cutoff = 0 - for idx, line_t in enumerate(self._lines_t[:] + [('', '')]): - if line_t[1].startswith(_MARK_FRAGMENT): - if anchor: - fragments[anchor] = tuple(fragment) - if not line_t[1][len(_MARK_FRAGMENT):].rstrip(): - fragments_cutoff = idx + 1 - break - anchor = line_t[1].split(_SEP_0, maxsplit=1)[1] - fragment.clear() - continue - fragment += [line_t] - self._lines_t = self._lines_t[fragments_cutoff:] - while True: - snapshot_before = self._lines_t[:] + fragments: dict[str, tuple[tuple[str, str], ...]] = {} + anchor = '' + fragment: list[tuple[str, str]] = [] + fragments_cutoff = -1 + for idx, line_t in enumerate(self._lines_t[:] + [('', '')]): + if line_t[1].startswith(_MARK_FRAGMENT): + if anchor: + fragments[anchor] = tuple(fragment) + if not line_t[1][len(_MARK_FRAGMENT):].rstrip(): + fragments_cutoff = idx + break + anchor = line_t[1].split(_SEP_0, maxsplit=1)[1] + fragment.clear() + continue + fragment += [line_t] + new_lines_t: list[tuple[str, str]] = [] - for line_t in reversed(self._lines_t): + replacement_happened = False + for idx, line_t in enumerate(self._lines_t): + if replacement_happened or idx == fragments_cutoff: + new_lines_t += [line_t] + continue cmd_name, remains = line_t[1].split(_SEP_0, maxsplit=1) - new_lines_t[0:0] = ( - [line_t] if cmd_name != _MARK_INSERT - else insert(line_t[0], - self._args_for_cmd(cmd_name, remains), - fragments)) + if cmd_name == _MARK_INSERT: + new_lines_t += insert( + line_t[0], + self._args_for_cmd(cmd_name, remains), + fragments) + replacement_happened = True + else: + new_lines_t += [line_t] self._lines_t = new_lines_t - if self._lines_t == snapshot_before: + if not replacement_happened: + self._lines_t = self._lines_t[fragments_cutoff + 1:] break @staticmethod diff --git a/src/tests/_timeout_retries.test b/src/tests/_timeout_retries.test index 9f7517d..cd2e24d 100644 --- a/src/tests/_timeout_retries.test +++ b/src/tests/_timeout_retries.test @@ -21,13 +21,15 @@ log 2 $ - password: bar × connection_state log 1 $ connection_state set to: [?] -× attempting-foobarbaz +× attempting insert connection_state : +1 ? connecting -log 2 $ attempting connection to foo.bar.baz:§§ identifying with … +log 2 $ attempting connection to HOSTNAME:§§ identifying with … + +× attempting-foobarbaz +insert attempting : +1 HOSTNAME foo.bar.baz × attempting-bazbarfoo -insert connection_state : +3 ? connecting -log 4 $ attempting connection to baz.bar.foo:§§ identifying with … +insert attempting : +3 HOSTNAME baz.bar.foo × fake-testing-timeout insert connection_state : +1 ? failed to connect: FAKE TESTING TIMEOUT diff --git a/src/tests/test.test b/src/tests/test.test index 68fc4dd..b8852f6 100644 --- a/src/tests/test.test +++ b/src/tests/test.test @@ -347,7 +347,7 @@ log 8 > USER foo 0 * :foo log 8 > NICK :?foo servermsg 1 :*.?.net 432 * ?foo :Erroneous nickname log 8 < :*.?.net 432 * ?foo :Erroneous nickname -insert disconnect :2 +8 +insert disconnect :-1 +8 log 9 $ DISCONNECTED log 8 $ nickname refused for bad format, giving up @@ -381,7 +381,7 @@ log 10 > USER baz 0 * :baz log 10 > NICK :baz servermsg 2 FAKE_IRC_CONN_ABORT_EXCEPTION log 10 $ connection_state set to: [broken: FAKE_IRC_CONN_ABORT_EXCEPTION] -insert disconnect :2 +10 +insert disconnect :-1 +10 log 11 $ DISCONNECTED log 10 $ will retry connecting in 1 seconds > /window 10 @@ -407,7 +407,7 @@ insert conn_init_0 1:8 log 2,3,4,5,6,7 $ CONNECTED insert conn_init_0 9: insert conn_init_1 -insert conn_init_2 :1 +insert conn_init_2 :2 log 1 > JOIN :#testtest -insert conn_init_2 1: +insert conn_init_2 2: insert during_conn : +0 diff --git a/src/tests/tui_draw.test b/src/tests/tui_draw.test index e08b87c..74686bf 100644 --- a/src/tests/tui_draw.test +++ b/src/tests/tui_draw.test @@ -35,19 +35,21 @@ line 0 on_black,bright_white --------------------------------------------------- × line-scrolldown line 21 on_black,bright_white,reverse vvv XXXXXXvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§ -× lines-status-prompt-start -line 22 on_black,bright_white :start)====================================================X123456789X123456789X§§ +× lines-status-prompt +line 22 on_black,bright_white x123456789x1234567=========================================X123456789X123456789X§§ insert lines-prompt-empty +× lines-status-prompt-start +insert lines-status-prompt : +22 x123456789x1234567 :start)=========== + × lines-status-prompt-foobarbaz -line 22 on_black,bright_white foo.bar.baz:debug)=========================================X123456789X123456789X§§ -insert lines-prompt-empty +insert lines-status-prompt : +22 x123456789x1234567 foo.bar.baz:debug) × line-invalid-prompt-command -line 0 on_black,bright_red,bold # §§:§§:§§ invalid prompt command: ? +line 0 on_black,bright_red,bold # §§:§§:§§ invalid prompt command: MSG§§ × line-invalid-prompt-command-unknown -line 0 on_black,bright_red,bold # §§:§§:§§ invalid prompt command: /? unknown§§ +insert line-invalid-prompt-command : +0 MSG /CMD unknown × line-ping line 0 on_black,bright_white < §§:§§:§§ PING :? @@ -55,6 +57,10 @@ line 0 on_black,bright_white < §§:§§:§§ PING :? × line-pong line 0 on_black,bright_green > §§:§§:§§ PONG :? +× lines-ping-pong +insert line-ping : +0 ? ?? +insert line-pong : +1 ? ?? + × line-tui-log line 0 on_black,bright_cyan # §§:§§:§§ ?§§ @@ -76,14 +82,22 @@ line 0 on_black,bright_green > §§:§§:§§ ?§§ × line-cal line 0 on_black,bright_white 20§§-§§-§§ §§ +× enter-unknown +> /? +log 0 # invalid prompt command: /? unknown + × servermsglogged servermsg 0 MSG log 1 < MSG +× ping-pong +insert servermsglogged : +0 MSG PING :? +log 1 > PONG :? + × history_0 insert line-cal : +0 -insert line-invalid-prompt-command : +1 ? not prefixed by /§§ -insert line-invalid-prompt-command-unknown : +2 ? foo +insert line-invalid-prompt-command : +1 MSG not prefixed by / +insert line-invalid-prompt-command-unknown : +2 CMD foo insert line-tui-log : +3 ? commands available in this window: insert line-tui-log : +4 ? /connect HOST_PORT [NICKNAME_PW] [REALNAME_USERNAME]§§ insert line-tui-log : +5 ? /help§§ @@ -96,18 +110,18 @@ insert line-tui-log : +11 ? /window.paste insert line-tui-log : +12 ? /window.prompt.backspace§§ insert line-tui-log : +13 ? /window.prompt.move_cursor DIRECTION§§ insert line-tui-log : +14 ? /window.prompt.scroll DIRECTION§§ -insert line-invalid-prompt-command-unknown : +15 ? 0 -insert line-invalid-prompt-command-unknown : +16 ? 1 -insert line-invalid-prompt-command-unknown : +17 ? 2 -insert line-invalid-prompt-command-unknown : +18 ? 3 -insert line-invalid-prompt-command-unknown : +19 ? 4 -insert line-invalid-prompt-command-unknown : +20 ? 5 -insert line-invalid-prompt-command-unknown : +21 ? 6 -insert line-invalid-prompt-command-unknown : +22 ? 7 -insert line-invalid-prompt-command-unknown : +23 ? foo_0123456789_0123456789_0123456789 -insert line-invalid-prompt-command : +24 ? /foo_0123456789_0123456789_0123456789_§§ +insert line-invalid-prompt-command-unknown : +15 CMD 0 +insert line-invalid-prompt-command-unknown : +16 CMD 1 +insert line-invalid-prompt-command-unknown : +17 CMD 2 +insert line-invalid-prompt-command-unknown : +18 CMD 3 +insert line-invalid-prompt-command-unknown : +19 CMD 4 +insert line-invalid-prompt-command-unknown : +20 CMD 5 +insert line-invalid-prompt-command-unknown : +21 CMD 6 +insert line-invalid-prompt-command-unknown : +22 CMD 7 +insert line-invalid-prompt-command-unknown : +23 CMD foo_0123456789_0123456789_0123456789 +insert line-invalid-prompt-command : +24 MSG /foo_0123456789_0123456789_0123456789_§§ insert line-bright-red-bold : +25 ? unknown -insert line-invalid-prompt-command : +26 ? /bar_0123456789_0123456789_0123456789_§§ +insert line-invalid-prompt-command : +26 MSG /bar_0123456789_0123456789_0123456789_§§ insert line-bright-red-bold : +27 ? unknown insert line-tui-log : +28 ? windows available via /window:§§ insert line-tui-log : +29 ? 0) :start§§ @@ -134,66 +148,38 @@ 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 line-ping : +19 ? ? -insert line-pong : +20 ? ? +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 line-ping : +25 ? foo -insert line-pong : +26 ? foo -insert line-ping : +27 ? bar -insert line-pong : +28 ? bar -insert line-ping : +29 ? baz -insert line-pong : +30 ? baz -insert line-ping : +31 ? 0 -insert line-pong : +32 ? 0 -insert line-ping : +33 ? 1 -insert line-pong : +34 ? 1 -insert line-ping : +35 ? 2 -insert line-pong : +36 ? 2 -insert line-ping : +37 ? 3 -insert line-pong : +38 ? 3 -insert line-ping : +39 ? 4 -insert line-pong : +40 ? 4 -insert line-ping : +41 ? 5 -insert line-pong : +42 ? 5 -insert line-ping : +43 ? 6 -insert line-pong : +44 ? 6 -insert line-ping : +45 ? 7 -insert line-pong : +46 ? 7 -insert line-ping : +47 ? 8 -insert line-pong : +48 ? 8 -insert line-ping : +49 ? 9 -insert line-pong : +50 ? 9 -insert line-ping : +51 ? 10 -insert line-pong : +52 ? 10 -insert line-ping : +53 ? 11 -insert line-pong : +54 ? 11 -insert line-ping : +55 ? 12 -insert line-pong : +56 ? 12 -insert line-ping : +57 ? 13 -insert line-pong : +58 ? 13 -insert line-ping : +59 ? 14 -insert line-pong : +60 ? 14 -insert line-ping : +61 ? 15 -insert line-pong : +62 ? 15 -insert line-ping : +63 ? 16 -insert line-pong : +64 ? 16 -insert line-ping : +65 ? 17 -insert line-pong : +66 ? 17 -insert line-ping : +67 ? 18 -insert line-pong : +68 ? 18 -insert line-ping : +69 ? 19 -insert line-pong : +70 ? 19 -insert line-ping : +71 ? 20 -insert line-pong : +72 ? 20 -insert line-ping : +73 ? 21 -insert line-pong : +74 ? 21 -insert line-ping : +75 ? 22 -insert line-pong : +76 ? 22 -insert line-ping : +77 ? 23 -insert line-pong : +78 ? 23 +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 × @@ -298,22 +284,14 @@ insert lines-status-prompt-start : +22 X123456789X123456789X =============([(0:3 insert lines-empty :7 insert history_0 :15 +7 insert lines-status-prompt-start : +22 X123456789X123456789X =================([0] -> /0 -log 0 # invalid prompt command: /0 unknown -> /1 -log 0 # invalid prompt command: /1 unknown -> /2 -log 0 # invalid prompt command: /2 unknown -> /3 -log 0 # invalid prompt command: /3 unknown -> /4 -log 0 # invalid prompt command: /4 unknown -> /5 -log 0 # invalid prompt command: /5 unknown -> /6 -log 0 # invalid prompt command: /6 unknown -> /7 -log 0 # invalid prompt command: /7 unknown +insert enter-unknown : +0 ? 0 +insert enter-unknown : +0 ? 1 +insert enter-unknown : +0 ? 2 +insert enter-unknown : +0 ? 3 +insert enter-unknown : +0 ? 4 +insert enter-unknown : +0 ? 5 +insert enter-unknown : +0 ? 6 +insert enter-unknown : +0 ? 7 insert history_0 1:23 +0 insert lines-status-prompt-start : +22 X123456789X123456789X =================([0] @@ -484,10 +462,8 @@ insert history_0 28:32 +18 insert lines-status-prompt-start : +22 X123456789X123456789X =========([0] 1 (2:7) # check new lines growing in other window, one of which long enough to wrap, to be re-start count in status (with wrapped only as single) -insert servermsglogged : +0 MSG PING :? -log 1 > PONG :? -insert servermsglogged : +0 MSG PING :9 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 -log 1 > PONG :9 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 +insert ping-pong : +0 ? ? +insert ping-pong : +0 ? 9 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 insert history_0 11:28 +0 insert line-bookmark : +17 insert history_0 28:32 +18 @@ -500,10 +476,9 @@ insert line-bookmark : +15 insert history_1 19:25 +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 +# check that growth below scroll does not by itself re-position bookmark in history > /window.history.scroll up -insert servermsglogged : +0 MSG PING :foo -log 1 > PONG :foo +insert ping-pong : +0 ? foo insert lines-empty :6 insert history_1 0:15 +6 insert line-scrolldown : +21 XXXXXX [10] v @@ -528,8 +503,7 @@ insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:2)] # check that growing lines below scroll in other preserves non-bottom bookmark (left in sight on previous window leave) > /window 0 -insert servermsglogged : +0 MSG PING :bar -log 1 > PONG :bar +insert ping-pong : +0 ? bar insert history_0 11:32 +0 insert line-bookmark : +21 insert lines-status-prompt-start : +22 X123456789X123456789X =====([0] (1:4) (2:7) @@ -546,8 +520,7 @@ insert history_1 :15 +6 insert line-scrolldown : +21 XXXXXX [12] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:4)] (2:7) > /window 0 -insert servermsglogged : +0 MSG PING :baz -log 1 > PONG :baz +insert ping-pong : +0 ? baz insert history_0 11:32 +0 insert line-bookmark : +21 insert lines-status-prompt-start : +22 X123456789X123456789X =====([0] (1:6) (2:7) @@ -568,8 +541,7 @@ insert history_1 25:31 +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 servermsglogged : +0 MSG PING :0 -log 1 > PONG :0 +insert ping-pong : +0 ? 0 insert history_1 12:25 +0 insert line-bookmark : +13 insert history_1 25:33 +14 @@ -590,8 +562,7 @@ 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 servermsglogged : +0 MSG PING :0 -log 1 > PONG :0 +insert ping-pong : +0 ? 0 insert lines-empty :20 insert history_1 3:4 +20 insert line-scrolldown : +21 XXXXXX [29] v @@ -602,36 +573,21 @@ insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =====(0 [(1:2)] insert history_0 11:32 +0 insert line-bookmark : +21 insert lines-status-prompt-start : +22 X123456789X123456789X =====([0] (1:2) (2:7) -insert servermsglogged : +0 MSG PING :1 -log 1 > PONG :1 -insert servermsglogged : +0 MSG PING :2 -log 1 > PONG :2 -insert servermsglogged : +0 MSG PING :3 -log 1 > PONG :3 -insert servermsglogged : +0 MSG PING :4 -log 1 > PONG :4 -insert servermsglogged : +0 MSG PING :5 -log 1 > PONG :5 -insert servermsglogged : +0 MSG PING :6 -log 1 > PONG :6 -insert servermsglogged : +0 MSG PING :7 -log 1 > PONG :7 -insert servermsglogged : +0 MSG PING :8 -log 1 > PONG :8 -insert servermsglogged : +0 MSG PING :9 -log 1 > PONG :9 -insert servermsglogged : +0 MSG PING :10 -log 1 > PONG :10 -insert servermsglogged : +0 MSG PING :11 -log 1 > PONG :11 -insert servermsglogged : +0 MSG PING :12 -log 1 > PONG :12 -insert servermsglogged : +0 MSG PING :13 -log 1 > PONG :13 -insert servermsglogged : +0 MSG PING :14 -log 1 > PONG :14 -insert servermsglogged : +0 MSG PING :15 -log 1 > PONG :15 +insert ping-pong : +0 ? 1 +insert ping-pong : +0 ? 2 +insert ping-pong : +0 ? 3 +insert ping-pong : +0 ? 4 +insert ping-pong : +0 ? 5 +insert ping-pong : +0 ? 6 +insert ping-pong : +0 ? 7 +insert ping-pong : +0 ? 8 +insert ping-pong : +0 ? 9 +insert ping-pong : +0 ? 10 +insert ping-pong : +0 ? 11 +insert ping-pong : +0 ? 12 +insert ping-pong : +0 ? 13 +insert ping-pong : +0 ? 14 +insert ping-pong : +0 ? 15 insert history_0 11:32 +0 insert line-bookmark : +21 insert lines-status-prompt-start : +22 X123456789X123456789X ====([0] (1:32) (2:7) @@ -656,8 +612,7 @@ insert history_1 41:61 +0 insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) # check bookmark remains absent with log growing while scrolled to bottom, … -insert servermsglogged : +0 MSG PING :16 -log 1 > PONG :16 +insert ping-pong : +0 ? 16 insert history_1 43:63 +0 insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) @@ -667,8 +622,7 @@ insert lines-empty :2 insert history_1 35:54 +2 insert line-scrolldown : +21 XXXXXX [11] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) -insert servermsglogged : +0 MSG PING :17 -log 1 > PONG :17 +insert ping-pong : +0 ? 17 insert lines-empty :4 insert history_1 37:54 +4 insert line-scrolldown : +21 XXXXXX [13] v @@ -687,36 +641,21 @@ insert lines-empty :2 insert history_1 37:54 +2 insert line-scrolldown : +21 XXXXXX [11] v insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X =========(0 [1] (2:7) -insert servermsglogged : +0 MSG PING :18 -log 1 > PONG :18 -insert servermsglogged : +0 MSG PING :19 -log 1 > PONG :19 -insert servermsglogged : +0 MSG PING :20 -log 1 > PONG :20 -insert servermsglogged : +0 MSG PING :21 -log 1 > PONG :21 -insert servermsglogged : +0 MSG PING :22 -log 1 > PONG :22 -insert servermsglogged : +0 MSG PING :23 -log 1 > PONG :23 -insert servermsglogged : +0 MSG PING :24 -log 1 > PONG :24 -insert servermsglogged : +0 MSG PING :25 -log 1 > PONG :25 -insert servermsglogged : +0 MSG PING :26 -log 1 > PONG :26 -insert servermsglogged : +0 MSG PING :27 -log 1 > PONG :27 -insert servermsglogged : +0 MSG PING :28 -log 1 > PONG :28 -insert servermsglogged : +0 MSG PING :29 -log 1 > PONG :29 -insert servermsglogged : +0 MSG PING :30 -log 1 > PONG :30 -insert servermsglogged : +0 MSG PING :31 -log 1 > PONG :31 -insert servermsglogged : +0 MSG PING :32 -log 1 > PONG :32 +insert ping-pong : +0 ? 18 +insert ping-pong : +0 ? 19 +insert ping-pong : +0 ? 20 +insert ping-pong : +0 ? 21 +insert ping-pong : +0 ? 22 +insert ping-pong : +0 ? 23 +insert ping-pong : +0 ? 24 +insert ping-pong : +0 ? 25 +insert ping-pong : +0 ? 26 +insert ping-pong : +0 ? 27 +insert ping-pong : +0 ? 28 +insert ping-pong : +0 ? 29 +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 line-scrolldown : +21 XXXXXX [29] v