From 4cf54d422eb2dd391b15e76052e9bdbb8b9fc1c3 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Fri, 10 May 2024 20:22:09 +0000 Subject: [PATCH] test: Never buffer output Avoid having log messages stuck in a pipe when stdout is not a tty, e.g. when running a suite of tests using 9pm. Two benefits: - Nicer experience when interactively running a suite - Timestamps inserted by 9pm are more useful --- test/infamy/tap.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/infamy/tap.py b/test/infamy/tap.py index 22ceb05a..ce57fe57 100644 --- a/test/infamy/tap.py +++ b/test/infamy/tap.py @@ -16,17 +16,20 @@ class Test: def __enter__(self): now = datetime.datetime.now().strftime("%F %T") self.out.write(f"# Starting ({now})\n") + self.out.flush() return self def __exit__(self, _, e, __): now = datetime.datetime.now().strftime("%F %T") self.out.write(f"# Exiting ({now})\n") + self.out.flush() if not e: self._not_ok("Missing explicit test result\n") else: if type(e) in (TestPass, TestSkip): self.out.write(f"{self.steps}..{self.steps}\n") + self.out.flush() raise SystemExit(0) traceback.print_exception(e, file=self.commenter) @@ -59,6 +62,7 @@ class Test: def _report(self, tag, msg): self.steps += 1 self.out.write(f"{tag} {self.steps}{msg}\n") + self.out.flush() def _ok(self, msg="", directive=None): if msg: @@ -112,6 +116,7 @@ class CommentWriter: data = data + "\n" self.f.write(data) + self.flush() def flush(self): return self.f.flush()