home · contact · privacy
Add basic log depth cutoff tests.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 23 Oct 2025 03:38:29 +0000 (05:38 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 23 Oct 2025 03:38:29 +0000 (05:38 +0200)
src/ircplom/testing.py
src/ircplom/tui_base.py
src/tests/tui_draw.test

index 183df9d65d8cc0195913bb2c25d1668d3744a8e5..e949cf216c8660a841c79b41d86b91eed11a9aca 100644 (file)
@@ -379,6 +379,7 @@ class _Playbook:
 
 class TestingClientTui(ClientTui):
     'Collects keypresses via TestTerminal and test file, compares log results.'
+    _MAXLEN_LOG = 30
     _client_cls = _TestClientKnowingTui
     _clients: list[_TestClientKnowingTui]
     _path_config: Optional[Path] = None
index 4b2cf9d8ad06f6878d9c294f321a9408526f154b..ef48d08efe2954fde584ddde6e15dc43014c9063 100644 (file)
@@ -24,7 +24,6 @@ LOG_FMT_ATTRS: dict[str, tuple[str, ...]] = {
     LOG_FMT_ALERT: ('bold', 'bright_red'),
     _LOG_PREFIX_DEFAULT: ('bright_cyan',),
 }
-_LOG_MAX_LEN = 1000
 
 _MIN_HEIGHT = 4
 _MIN_WIDTH = 32
@@ -123,8 +122,13 @@ class _HistoryWidget(_ScrollableWidget):
     _BOOKMARK_HISTORY_IDX_POS: int = -3
     _PADDING_HISTORY_IDX_POS: int = -4
 
-    def __init__(self, wrap: Callable[[str], list[str]], **kwargs) -> None:
+    def __init__(self,
+                 maxlen_log: int,
+                 wrap: Callable[[str], list[str]],
+                 **kwargs
+                 ) -> None:
         super().__init__(**kwargs)
+        self._maxlen_log = maxlen_log
         self._wrap = wrap
         self._wrapped: list[tuple[int, str]] = []
         self._newest_read_history_idx_pos = self._UNSET_IDX_POS
@@ -155,7 +159,7 @@ class _HistoryWidget(_ScrollableWidget):
                 else (-len(self._wrapped)
                       + self._last_wrapped_idx_pos_for_hist_idx_pos(
                           self._len_full_history + max(self._history_idx_neg,
-                                                       -_LOG_MAX_LEN))))
+                                                       - self._maxlen_log))))
             self.bookmark()
 
     def append(self, to_append: str) -> None:
@@ -167,7 +171,7 @@ class _HistoryWidget(_ScrollableWidget):
             n_wrapped = self._add_wrapped(len(self._history) - 1, to_append)
             if not self._UNSET_IDX_NEG != self._wrapped_idx_neg >= -1:
                 self._wrapped_idx_neg -= n_wrapped
-        if len(self._history) > _LOG_MAX_LEN:
+        if len(self._history) > self._maxlen_log:
             self._history = self._history[1:]
             self._history_offset += 1
             wrap_offset = 0
@@ -414,11 +418,13 @@ class Window:
     _title = ':start'
     _last_today = ''
 
-    def __init__(self, idx: int, term: 'Terminal', **kwargs) -> None:
+    def __init__(self, idx: int, term: 'Terminal', maxlen_log: int, **kwargs
+                 ) -> None:
         super().__init__(**kwargs)
         self.idx = idx
         self._term = term
-        self.history = _HistoryWidget(wrap=self._term.wrap,
+        self.history = _HistoryWidget(maxlen_log=maxlen_log,
+                                      wrap=self._term.wrap,
                                       write=self._term.write)
         self.prompt = self.__annotations__['prompt'](write=self._term.write)
         if hasattr(self._term, 'size'):
@@ -550,6 +556,7 @@ class TerminalInterface(ABC):
 
 class BaseTui(QueueMixin):
     'Base for graphical user interface elements.'
+    _MAXLEN_LOG = 1000
 
     def __init__(self, term: TerminalInterface, **kwargs) -> None:
         super().__init__(**kwargs)
@@ -584,7 +591,8 @@ class BaseTui(QueueMixin):
 
     def _new_window(self, win_class=Window, **kwargs) -> Window:
         new_idx = len(self._windows)
-        win = win_class(idx=new_idx, term=self._term, **kwargs)
+        win = win_class(idx=new_idx, term=self._term,
+                        maxlen_log=self._MAXLEN_LOG, **kwargs)
         self._windows += [win]
         return win
 
index e7fd8d77f76f01770efd8113b9dbdd3c25072e21..814f15edf58247b6f7802b16434a56093578b744 100644 (file)
@@ -44,6 +44,8 @@ line 21 on_black,bright_white,reverse vvv [4] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 line 21 on_black,bright_white,reverse vvv [6] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 × scrolldown-8
 line 21 on_black,bright_white,reverse vvv [8] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
+× scrolldown-9
+line 21 on_black,bright_white,reverse vvv [9] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 × scrolldown-10
 line 21 on_black,bright_white,reverse vvv [10] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 × scrolldown-11
@@ -52,10 +54,15 @@ line 21 on_black,bright_white,reverse vvv [11] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 line 21 on_black,bright_white,reverse vvv [12] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 × scrolldown-14
 line 21 on_black,bright_white,reverse vvv [14] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
+× scrolldown-19
+line 21 on_black,bright_white,reverse vvv [19] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 × scrolldown-22
 line 21 on_black,bright_white,reverse vvv [22] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
 × scrolldown-25
 line 21 on_black,bright_white,reverse vvv [25] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
+× scrolldown-29
+line 21 on_black,bright_white,reverse vvv [29] vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
+
 
 × status-[0]-prompt
 line 22 on_black,bright_white :start)=====================================================================([0]§§
@@ -81,6 +88,8 @@ insert prompt-empty : +23
 × status-0-[1:6]-prompt
 line 22 on_black,bright_white foo.bar.baz:debug)====================================================(0 [(1:6)]§§
 insert prompt-empty : +23
+× status-0-[1:32]-prompt
+line 22 on_black,bright_white foo.bar.baz:debug)===================================================(0 [(1:32)]§§
 × status-0-[1]-prompt
 line 22 on_black,bright_white foo.bar.baz:debug)========================================================(0 [1]§§
 insert prompt-empty : +23
@@ -168,6 +177,38 @@ line 27 on_black,bright_white <.. §§:§§:§§ PING :bar
 line 28 on_black,bright_green >.. §§:§§:§§ PONG :bar
 line 29 on_black,bright_white <.. §§:§§:§§ PING :baz
 line 30 on_black,bright_green >.. §§:§§:§§ PONG :baz
+line 31 on_black,bright_white <.. §§:§§:§§ PING :0
+line 32 on_black,bright_green >.. §§:§§:§§ PONG :0
+line 31 on_black,bright_white <.. §§:§§:§§ PING :1
+line 32 on_black,bright_green >.. §§:§§:§§ PONG :1
+line 33 on_black,bright_white <.. §§:§§:§§ PING :2
+line 34 on_black,bright_green >.. §§:§§:§§ PONG :2
+line 35 on_black,bright_white <.. §§:§§:§§ PING :3
+line 36 on_black,bright_green >.. §§:§§:§§ PONG :3
+line 37 on_black,bright_white <.. §§:§§:§§ PING :4
+line 38 on_black,bright_green >.. §§:§§:§§ PONG :4
+line 39 on_black,bright_white <.. §§:§§:§§ PING :5
+line 40 on_black,bright_green >.. §§:§§:§§ PONG :5
+line 41 on_black,bright_white <.. §§:§§:§§ PING :6
+line 42 on_black,bright_green >.. §§:§§:§§ PONG :6
+line 43 on_black,bright_white <.. §§:§§:§§ PING :7
+line 44 on_black,bright_green >.. §§:§§:§§ PONG :7
+line 45 on_black,bright_white <.. §§:§§:§§ PING :8
+line 46 on_black,bright_green >.. §§:§§:§§ PONG :8
+line 47 on_black,bright_white <.. §§:§§:§§ PING :9
+line 48 on_black,bright_green >.. §§:§§:§§ PONG :9
+line 49 on_black,bright_white <.. §§:§§:§§ PING :10
+line 50 on_black,bright_green >.. §§:§§:§§ PONG :10
+line 51 on_black,bright_white <.. §§:§§:§§ PING :11
+line 52 on_black,bright_green >.. §§:§§:§§ PONG :11
+line 53 on_black,bright_white <.. §§:§§:§§ PING :12
+line 54 on_black,bright_green >.. §§:§§:§§ PONG :12
+line 55 on_black,bright_white <.. §§:§§:§§ PING :13
+line 56 on_black,bright_white <.. §§:§§:§§ PONG :13
+line 57 on_black,bright_white <.. §§:§§:§§ PING :14
+line 58 on_black,bright_white <.. §§:§§:§§ PONG :14
+line 59 on_black,bright_white <.. §§:§§:§§ PING :15
+line 60 on_black,bright_white <.. §§:§§:§§ PONG :15
 
 ×
 
@@ -535,5 +576,27 @@ insert bookmark : +15
 insert history_1 25:31 +16
 insert status-0-[1]-prompt : +22
 
+# check log growth beyond max depth only remarkable after scrolling up to limit
+loggedservermsg 0 1 <.. PING :0
+log 1 >.. PONG :0
+insert history_1 12:25 +0
+insert bookmark : +13
+insert history_1 25:33 +14
+insert status-0-[1]-prompt : +22
+> /window.history.scroll up
+insert history_1 2:23 +0
+insert scrolldown-9 : +21
+insert status-0-[1]-prompt : +22
+> /window.history.scroll up
+insert lines-empty :10 +0
+insert history_1 1:12 +10
+insert scrolldown-19 : +21
+insert status-0-[1]-prompt : +22
+> /window.history.scroll up
+insert lines-empty :20 +0
+insert history_1 1:2 +20
+insert scrolldown-29 : +21
+insert status-0-[1]-prompt : +22
+
 > /quit
 log 0 <..