From: Christian Heller Date: Fri, 17 Oct 2025 08:00:06 +0000 (+0200) Subject: For testing "repeat" directive, allow relative next to absolute number manipulations. X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/cards/%7B%7Bcard_id%7D%7D/view?a=commitdiff_plain;ds=sidebyside;p=ircplom For testing "repeat" directive, allow relative next to absolute number manipulations. --- diff --git a/src/ircplom/testing.py b/src/ircplom/testing.py index bdc0cce..926c338 100644 --- a/src/ircplom/testing.py +++ b/src/ircplom/testing.py @@ -225,7 +225,13 @@ class _Playbook: if cmd_name == _MARK_ANCHOR: continue args_ = list(self._args_for_cmd(cmd_name, remains)) - args_[0] = args[2] + if args[2][0] in '+-': + args_[0] = _SEP_1.join( + str(int(n) + int(args[2])) + for n in args_[0].split(_SEP_1) if n + ) or ',' + else: + args_[0] = args[2] insert = _SEP_0.join([cmd_name] + args_) inserts += [(index_str + ':r:' + inserted_t[0], insert)] return inserts diff --git a/src/tests/test.test b/src/tests/test.test index 5310321..c80cd1a 100644 --- a/src/tests/test.test +++ b/src/tests/test.test @@ -10,8 +10,8 @@ log 1 ..$ isupport:USERLEN set to: [10] log 1 ..$ caps cleared log 1 ..$ users cleared log 1 ..$ channels cleared -| standard-clears-out log , ..$ DISCONNECTED +| standard-clears-out # connect with values set by /connect, init CAP negotation log 1 ..$ hostname set to: [foo.bar.baz] @@ -20,14 +20,16 @@ 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-in log 1 ..$ port set to: [6697] -| conn0 +| conn0-in log 1 ..$ connection_state set to: [connecting] log 1 ..$ connection_state set to: [connected] -| conn1 +| conn0-out log , ..$ CONNECTED -| conn2 +| conn1-in log 1 ..> CAP LS :302 +| conn-out log 1 ..> USER foobarbazquux 0 * :baz log 1 ..> NICK :foo @@ -83,7 +85,8 @@ log 1 ..> CAP :END # of all pre-MOTD greeting messages, only process isupports loggedservermsg 0 1 ..< :foo.bar.baz 001 foo1 :Welcome to the foo.bar.baz network -| conn3 +| conn1-out +| conn2-in loggedservermsg 0 1 ..< :foo.bar.baz 002 foo1 :Your host is foo.bar.baz loggedservermsg 0 1 ..< :foo.bar.baz 003 foo1 :This server was created Jan 1 2020 loggedservermsg 0 1 ..< :foo.bar.baz 004 foo1 foo.bar.baz ircserver-1.0 abc def ghi @@ -121,7 +124,7 @@ log 1 ..$ users:me:modes set to: [+Ziw] # handle bot query NOTICE loggedservermsg 0 1 ..< :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. -| conn4 +| conn2-out # check difference in available commands when switching to client window > /join #test @@ -132,7 +135,7 @@ log 0 ..# 0) :start log 0 ..# 1) foo.bar.baz:debug log 0 ..# 2) foo.bar.baz:server log 0 ..# 3) foo.bar.baz/SaslServ -| conn5 +| conn3-in > /window 1 > /help log 1 ..# commands available in this window: @@ -347,60 +350,51 @@ log 6 .!$ cannot send, connection seems closed log 1 .!$ cannot send, connection seems closed > /privmsg #test test log 1 .!$ not sending, since not in channel -| conn6 +| conn3-out # test setting up second client, but 432 irrecoverably > /connect baz.bar.foo ?foo foo:foo -repeat standard-clears-in standard-clears-out 8 -log , ..$ DISCONNECTED +repeat standard-clears-in standard-clears-out +7 log 8 ..$ hostname set to: [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] -repeat conn0 conn1 8 -log , ..$ CONNECTED -log 8 ..> CAP LS :302 +repeat conn-in conn-out +7 log 8 ..> USER foo 0 * :foo log 8 ..> NICK :?foo loggedservermsg 1 8 ..< :*.?.net 432 * ?foo :Erroneous nickname +| disconnect-in repeat isupport-clear-in isupport-clear-out 8 log 8 ..$ connection_state set to: [] log , ..$ DISCONNECTED +| disconnect-out log 8 .!$ nickname refused for bad format, giving up # test failing third connection > /connect baz.baz.baz baz baz:baz -repeat standard-clears-in standard-clears-out 9 -log , ..$ DISCONNECTED +repeat standard-clears-in standard-clears-out +8 log 9 ..$ hostname set to: [baz.baz.baz] log 9 ..$ port set to: [-1] log 9 ..$ nick_wanted set to: [baz] log 9 ..$ user_wanted set to: [baz] log 9 ..$ realname set to: [baz] -log 9 ..$ port set to: [6697] -repeat conn0 conn1 9 -log , ..$ CONNECTED -log 9 ..> CAP LS :302 +repeat conn-in conn-out +8 log 9 ..> USER baz 0 * :baz log 9 ..> NICK :baz servermsg 2 FAKE_IRC_CONN_ABORT_EXCEPTION log 9 ..$ connection_state set to: [broken: FAKE_IRC_CONN_ABORT_EXCEPTION] -repeat isupport-clear-in isupport-clear-out 9 -log 9 ..$ connection_state set to: [] -log , ..$ DISCONNECTED +repeat disconnect-in disconnect-out +1 log 9 .!$ will retry connecting in 1 seconds # check that (save TUI tests assuming start on window 0, and no 4 yet) on reconnect, all the same effects can be expected > /reconnect -log 1 ..$ connection_state set to: [connecting] -log 1 ..$ connection_state set to: [connected] +repeat conn0-in conn0-out log 2,3,4,5,6,7 ..$ CONNECTED -repeat conn2 conn3 +repeat conn1-in conn1-out log 1 ..> JOIN :#testtest -repeat conn3 conn4 -repeat conn5 conn6 +repeat conn2-in conn2-out +repeat conn3-in conn3-out > /quit log 0 ..< diff --git a/src/tests/tui_draw.test b/src/tests/tui_draw.test index 3f9d067..360bcd8 100644 --- a/src/tests/tui_draw.test +++ b/src/tests/tui_draw.test @@ -1,30 +1,32 @@ | empty-init-in -| lines-to-19-empty-in -| line-0-empty-in +| lines-empty-16-in +| lines-empty-8-in +| lines-empty-4-in +| lines-empty-2-in +| lines-empty-1-in line 0 0 on_black -| line-0-empty-out -repeat line-0-empty-in line-0-empty-out 1 -repeat line-0-empty-in line-0-empty-out 2 -repeat line-0-empty-in line-0-empty-out 3 -repeat line-0-empty-in line-0-empty-out 4 -repeat line-0-empty-in line-0-empty-out 5 -repeat line-0-empty-in line-0-empty-out 6 -repeat line-0-empty-in line-0-empty-out 7 -repeat line-0-empty-in line-0-empty-out 8 -repeat line-0-empty-in line-0-empty-out 9 -repeat line-0-empty-in line-0-empty-out 10 -repeat line-0-empty-in line-0-empty-out 11 -repeat line-0-empty-in line-0-empty-out 12 -repeat line-0-empty-in line-0-empty-out 13 -repeat line-0-empty-in line-0-empty-out 14 -repeat line-0-empty-in line-0-empty-out 15 -repeat line-0-empty-in line-0-empty-out 16 -repeat line-0-empty-in line-0-empty-out 17 -repeat line-0-empty-in line-0-empty-out 18 -repeat line-0-empty-in line-0-empty-out 19 -| lines-to-19-empty-out -repeat line-0-empty-in line-0-empty-out 20 -repeat line-0-empty-in line-0-empty-out 21 +| lines-empty-1-out +repeat lines-empty-1-in lines-empty-1-out 1 +| lines-empty-2-out +repeat lines-empty-1-in lines-empty-1-out 2 +repeat lines-empty-1-in lines-empty-1-out 3 +| lines-empty-4-out +repeat lines-empty-1-in lines-empty-1-out 4 +repeat lines-empty-1-in lines-empty-1-out 5 +repeat lines-empty-1-in lines-empty-1-out 6 +repeat lines-empty-1-in lines-empty-1-out 7 +| lines-empty-8-out +repeat lines-empty-1-in lines-empty-1-out 8 +repeat lines-empty-1-in lines-empty-1-out 9 +repeat lines-empty-1-in lines-empty-1-out 10 +repeat lines-empty-1-in lines-empty-1-out 11 +repeat lines-empty-1-in lines-empty-1-out 12 +repeat lines-empty-1-in lines-empty-1-out 13 +repeat lines-empty-1-in lines-empty-1-out 14 +repeat lines-empty-1-in lines-empty-1-out 15 +| lines-empty-16-out +repeat lines-empty-4-in lines-empty-4-out +16 +repeat lines-empty-2-in lines-empty-2-out +19 | status-prompt-empty-in line 22 0 :start)=====================================================================([0] line 23 0 > @@ -42,17 +44,20 @@ repeat empty-init-in empty-init-out > foo log 0 .!# invalid prompt command: not prefixed by / | input-foo-out -repeat line-0-empty-in line-0-empty-out -repeat line-0-empty-in line-0-empty-out 19 +repeat lines-empty-16-in lines-empty-16-out +repeat lines-empty-4-in lines-empty-4-out +16 +| date-at-20-plus-topmost-in | date-at-20-in line 20 0 on_black 20 line 20 4 on_black - line 20 7 on_black - line 20 10 on_black | date-at-20-out +| foo-unprefixed-line-21-in line 21 0 on_black,bold,bright_red,bright_cyan .!# line 21 13 on_black,bold,bright_red,bright_cyan invalid prompt command: not prefixed by / - +| foo-unprefixed-line-21-out +| date-at-20-plus-topmost-out repeat status-prompt-empty-in status-prompt-empty-out # further inputs grow log upwards @@ -61,38 +66,53 @@ repeat status-prompt-empty-in status-prompt-empty-out log 0 .!# invalid prompt command: /foo unknown | input-cmd-foo-out repeat input-cmd-foo-in input-cmd-foo-out -repeat line-0-empty-in line-0-empty-out -repeat line-0-empty-in line-0-empty-out 17 -repeat date-at-20-in date-at-20-out 18 -| foo-unprefixed-line-19-in -line 19 13 on_black,bold,bright_red,bright_cyan invalid prompt command: not prefixed by / -| foo-unprefixed-line-19-out +repeat lines-empty-16-in lines-empty-16-out +repeat lines-empty-2-in lines-empty-2-out +16 +| date-at-18-plus-3-in +repeat date-at-20-plus-topmost-in date-at-20-plus-topmost-out -2 | foo-unknown-line-20-in line 20 13 on_black,bold,bright_red,bright_cyan invalid prompt command: /foo unknown | foo-unknown-line-20-out repeat foo-unknown-line-20-in foo-unknown-line-20-out 21 +| date-at-18-plus-3-out +repeat status-prompt-empty-in status-prompt-empty-out # check wrapping > /foo_0123456789_0123456789_01234567 log 0 .!# invalid prompt command: /foo_0123456789_0123456789_01234567 unknown +repeat lines-empty-16-in lines-empty-16-out +repeat lines-empty-1-in lines-empty-1-out +16 +| date-at-17-plus-4-in +repeat date-at-18-plus-3-in date-at-18-plus-3-out -1 | unwrapped-at-21-in line 21 13 on_black,bold,bright_red,bright_cyan invalid prompt command: /foo_0123456789_0123456789_01234567 unknown | unwrapped-at-21-out +| date-at-17-plus-4-out +repeat status-prompt-empty-in status-prompt-empty-out | input-wrapped-in > /foo_0123456789_0123456789_012345678 log 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown | input-wrapped-out -| wrapped-first-at-20-in +| scroll-returnable-0-in +repeat lines-empty-8-in lines-empty-8-out +repeat lines-empty-4-in lines-empty-4-out +8 +repeat lines-empty-2-in lines-empty-2-out +12 +repeat lines-empty-1-in lines-empty-1-out +14 +| date-at-15-plus-6-in +repeat date-at-17-plus-4-in date-at-17-plus-4-out -2 +| wrapped-at-20-in line 20 13 on_black,bold,bright_red,bright_cyan invalid prompt command: /foo_0123456789_0123456789_012345678 -| wrapped-first-at-20-out -| wrapped-second-at-21-in line 21 0 on_black,bold,bright_red,bright_cyan unknown -| wrapped-second-at-21-out +| wrapped-at-20-out +| date-at-15-plus-6-out +repeat status-prompt-empty-in status-prompt-empty-out +| scroll-returnable-0-out # check scrolling up on short history > /window.history.scroll up | topmost-scroll-in -repeat lines-to-19-empty-in lines-to-19-empty-out +repeat lines-empty-16-in lines-empty-16-out +repeat lines-empty-4-in lines-empty-4-out +16 repeat date-at-20-in date-at-20-out | topmost-scroll-out line 21 0 reverse vvv [6] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv @@ -100,23 +120,15 @@ repeat status-prompt-empty-in status-prompt-empty-out # check scrolling down on short history > /window.history.scroll down -repeat line-0-empty-in line-0-empty-out -repeat line-0-empty-in line-0-empty-out 14 -repeat date-at-20-in date-at-20-out 15 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 16 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 17 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 18 -repeat unwrapped-at-21-in unwrapped-at-21-out 19 -repeat wrapped-first-at-20-in wrapped-first-at-20-out -repeat wrapped-second-at-21-in wrapped-second-at-21-out -repeat status-prompt-empty-in status-prompt-empty-out +repeat scroll-returnable-0-in scroll-returnable-0-out # check history growing below up-scroll > /window.history.scroll up +| input-foo-cmd-foo-in repeat input-foo-in input-foo-out repeat input-cmd-foo-in input-cmd-foo-out -repeat input-foo-in input-foo-out -repeat input-cmd-foo-in input-cmd-foo-out +| input-foo-cmd-foo-out +repeat input-foo-cmd-foo-in input-foo-cmd-foo-out repeat input-foo-in input-foo-out repeat topmost-scroll-in topmost-scroll-out line 21 0 reverse vvv [11] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv @@ -124,123 +136,78 @@ repeat status-prompt-empty-in status-prompt-empty-out # check scroll-down on longer history > /window.history.scroll down -repeat line-0-empty-in line-0-empty-out -repeat line-0-empty-in line-0-empty-out 9 -repeat date-at-20-in date-at-20-out 10 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 11 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 12 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 13 -repeat unwrapped-at-21-in unwrapped-at-21-out 14 -repeat wrapped-first-at-20-in wrapped-first-at-20-out 15 -repeat wrapped-second-at-21-in wrapped-second-at-21-out 16 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 17 +repeat lines-empty-8-in lines-empty-8-out +repeat lines-empty-2-in lines-empty-2-out +8 +repeat date-at-15-plus-6-in date-at-15-plus-6-out -5 +| foo-only-fails-lines-2-at-17-in +repeat foo-unprefixed-line-21-in foo-unprefixed-line-21-out 17 repeat foo-unknown-line-20-in foo-unknown-line-20-out 18 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 19 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 20 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 21 +| foo-only-fails-lines-2-at-17-out +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out +2 +repeat foo-unprefixed-line-21-in foo-unprefixed-line-21-out 21 repeat status-prompt-empty-in status-prompt-empty-out # check history growing upwards if scrolled down -repeat input-foo-in input-foo-out -repeat input-cmd-foo-in input-cmd-foo-out -repeat input-foo-in input-foo-out -repeat input-cmd-foo-in input-cmd-foo-out -repeat input-foo-in input-foo-out -repeat input-cmd-foo-in input-cmd-foo-out -repeat input-foo-in input-foo-out -repeat input-cmd-foo-in input-cmd-foo-out -repeat input-foo-in input-foo-out -repeat input-cmd-foo-in input-cmd-foo-out -repeat input-foo-in input-foo-out -repeat input-cmd-foo-in input-cmd-foo-out -repeat input-foo-in input-foo-out -repeat input-cmd-foo-in input-cmd-foo-out -repeat input-foo-in input-foo-out -repeat input-cmd-foo-in input-cmd-foo-out -repeat input-foo-in input-foo-out -repeat input-cmd-foo-in input-cmd-foo-out -| bottom-longer-history-in +repeat input-foo-cmd-foo-in input-foo-cmd-foo-out +repeat input-foo-cmd-foo-in input-foo-cmd-foo-out +repeat input-foo-cmd-foo-in input-foo-cmd-foo-out +repeat input-foo-cmd-foo-in input-foo-cmd-foo-out +repeat input-foo-cmd-foo-in input-foo-cmd-foo-out +repeat input-foo-cmd-foo-in input-foo-cmd-foo-out +repeat input-foo-cmd-foo-in input-foo-cmd-foo-out +repeat input-foo-cmd-foo-in input-foo-cmd-foo-out +repeat input-foo-cmd-foo-in input-foo-cmd-foo-out +| scroll-returnable-1-in repeat foo-unknown-line-20-in foo-unknown-line-20-out 0 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 1 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 2 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 3 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 4 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 5 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 6 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 7 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 8 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 9 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 10 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 11 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 12 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 13 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 14 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 15 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 16 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 17 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 18 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 19 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 20 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 21 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -16 +repeat foo-unprefixed-line-21-in foo-unprefixed-line-21-out 3 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -13 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -11 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -9 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -7 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -5 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -3 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -1 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out +1 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out +3 repeat status-prompt-empty-in status-prompt-empty-out -| bottom-longer-history-out +| scroll-returnable-1-out # check scroll-up on longer history no longer starting at just date, and counting unwrapped below-lines one-to-one > /window.history.scroll up -| scrolled-up-longer-history-in -repeat line-0-empty-in line-0-empty-out -repeat line-0-empty-in line-0-empty-out 1 -repeat date-at-20-in date-at-20-out 2 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 3 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 4 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 5 -repeat unwrapped-at-21-in unwrapped-at-21-out 6 -repeat wrapped-first-at-20-in wrapped-first-at-20-out 7 -repeat wrapped-second-at-21-in wrapped-second-at-21-out 8 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 9 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 10 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 11 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 12 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 13 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 14 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 15 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 16 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 17 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 18 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 19 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 20 -| scrolled-up-longer-history-out +| scroll-returnable-2-in +repeat lines-empty-2-in lines-empty-2-out +repeat date-at-15-plus-6-in date-at-15-plus-6-out -13 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -8 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -6 +repeat foo-unprefixed-line-21-in foo-unprefixed-line-21-out 13 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -3 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -1 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out +1 +repeat foo-unprefixed-line-21-in foo-unprefixed-line-21-out 20 +| scroll-returnable-2-out line 21 0 reverse vvv [12] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv repeat status-prompt-empty-in status-prompt-empty-out > /window.history.scroll down -repeat bottom-longer-history-in bottom-longer-history-out +repeat scroll-returnable-1-in scroll-returnable-1-out # check adding a wrapped line under scroll-up increases visible below-count by one, but scroll down … > /window.history.scroll up repeat input-wrapped-in input-wrapped-out -repeat scrolled-up-longer-history-in scrolled-up-longer-history-out +repeat scroll-returnable-2-in scroll-returnable-2-out line 21 0 reverse vvv [13] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv > /window.history.scroll down -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 0 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 1 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 2 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 3 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 4 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 5 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 6 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 7 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 8 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 9 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 10 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 11 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 12 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 13 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -17 +repeat foo-unprefixed-line-21-in foo-unprefixed-line-21-out 2 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -14 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -12 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -10 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -8 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -6 repeat foo-unknown-line-20-in foo-unknown-line-20-out 14 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 15 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 16 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 17 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 18 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 19 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -2 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out +2 repeat foo-unknown-line-20-in foo-unknown-line-20-out 20 line 21 0 reverse vvv [2] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv repeat status-prompt-empty-in status-prompt-empty-out @@ -248,27 +215,17 @@ repeat status-prompt-empty-in status-prompt-empty-out # check scroll-up over wrapped increases visible below-lines count only by fused history lines > /window.history.scroll down repeat foo-unknown-line-20-in foo-unknown-line-20-out 0 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 1 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 2 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 3 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 4 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 5 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 6 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 7 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 8 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 9 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 10 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 11 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 12 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 13 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 14 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 15 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 16 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 17 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 18 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 19 -repeat wrapped-first-at-20-in wrapped-first-at-20-out 20 -repeat wrapped-second-at-21-in wrapped-second-at-21-out 21 +repeat foo-unprefixed-line-21-in foo-unprefixed-line-21-out 1 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -15 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -13 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -11 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -9 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -7 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -5 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -3 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out -1 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out +1 +repeat wrapped-at-20-in wrapped-at-20-out repeat status-prompt-empty-in status-prompt-empty-out > /window.history.scroll up line 21 0 reverse vvv [11] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv @@ -276,19 +233,12 @@ repeat status-prompt-empty-in status-prompt-empty-out # check scrolls-up over longer history until top > /window.history.scroll up -repeat line-0-empty-in line-0-empty-out -repeat line-0-empty-in line-0-empty-out 5 -repeat line-0-empty-in line-0-empty-out 10 -repeat date-at-20-in date-at-20-out 11 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 12 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 13 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 14 -repeat unwrapped-at-21-in unwrapped-at-21-out 15 -repeat wrapped-first-at-20-in wrapped-first-at-20-out 16 -repeat wrapped-second-at-21-in wrapped-second-at-21-out 17 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 18 -repeat foo-unknown-line-20-in foo-unknown-line-20-out 19 -repeat foo-unprefixed-line-19-in foo-unprefixed-line-19-out 20 +repeat lines-empty-8-in lines-empty-8-out +repeat lines-empty-2-in lines-empty-2-out +8 +repeat lines-empty-1-in lines-empty-1-out +10 +repeat date-at-15-plus-6-in date-at-15-plus-6-out -4 +repeat foo-only-fails-lines-2-at-17-in foo-only-fails-lines-2-at-17-out +1 +repeat foo-unprefixed-line-21-in foo-unprefixed-line-21-out 20 line 21 0 reverse vvv [22] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv repeat status-prompt-empty-in status-prompt-empty-out > /window.history.scroll up