Skip to content

Commit 0f26db3

Browse files
committed
libregrtest explicitly flushs stdout and stderr
libregrtest regrtest_unraisable_hook() and regrtest_threading_excepthook() now explicitly flush sys.stdout, sys.stderr and sys.__stderr__.
1 parent 7523bbf commit 0f26db3

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

Lib/test/libregrtest/utils.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,23 @@ def print_warning(msg):
6868
orig_unraisablehook = None
6969

7070

71+
def flush_std_streams():
72+
if sys.stdout is not None:
73+
sys.stdout.flush()
74+
if sys.stderr is not None:
75+
sys.stderr.flush()
76+
77+
7178
def regrtest_unraisable_hook(unraisable):
7279
global orig_unraisablehook
7380
support.environment_altered = True
7481
print_warning("Unraisable exception")
7582
old_stderr = sys.stderr
7683
try:
84+
flush_std_streams()
7785
sys.stderr = sys.__stderr__
7886
orig_unraisablehook(unraisable)
87+
sys.stderr.flush()
7988
finally:
8089
sys.stderr = old_stderr
8190

@@ -95,8 +104,10 @@ def regrtest_threading_excepthook(args):
95104
print_warning(f"Uncaught thread exception: {args.exc_type.__name__}")
96105
old_stderr = sys.stderr
97106
try:
107+
flush_std_streams()
98108
sys.stderr = sys.__stderr__
99109
orig_threading_excepthook(args)
110+
sys.stderr.flush()
100111
finally:
101112
sys.stderr = old_stderr
102113

0 commit comments

Comments
 (0)