From 3ed155edbcbfa231f4ad48d4aa28f40141cf6952 Mon Sep 17 00:00:00 2001 From: Yury Selivanov Date: Tue, 7 Jul 2020 13:21:43 -0700 Subject: [PATCH] Fix `edb tests` to render running progress without artifacts --- edb/tools/test/runner.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/edb/tools/test/runner.py b/edb/tools/test/runner.py index 0d3fa1093726..c4e6125c46ab 100644 --- a/edb/tools/test/runner.py +++ b/edb/tools/test/runner.py @@ -410,6 +410,7 @@ def __init__(self, *, tests, stream): self.buffer = collections.defaultdict(str) self.last_lines = -1 self.max_lines = 0 + self.max_label_lines_rendered = collections.defaultdict(int) def report(self, test, marker, description=None, *, currently_running): if marker in {Markers.failed, Markers.errored}: @@ -488,6 +489,16 @@ def _render_test_list(label, max_lines, tests, style): line = self._color_second_column(line, style) lines.append(line) + # Prevent the rendered output from "jumping" up/down when we + # render 2 lines worth of running tests just after we rendered + # 3 lines. + for _ in range(self.max_label_lines_rendered[label] - tests_lines): + lines.append(' ' * cols) + self.max_label_lines_rendered[label] = max( + self.max_label_lines_rendered[label], + tests_lines + ) + clear_cmd = '' if self.last_lines > 0: # Move cursor up `last_lines` times.