From 8dee809410e2d433bb0be5d8a1699736b90db0b5 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Tue, 25 Sep 2001 20:05:11 +0000 Subject: Guido points out that sys.__stdout__ is a bit bucket under IDLE. So keep the local save/modify/restore of sys.stdout, but add machinery so that regrtest can tell test_support the value of sys.stdout at the time regrtest.main() started, and test_support can pass that out later to anyone who needs a "visible" stdout. --- Lib/test/regrtest.py | 1 + Lib/test/test_support.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index ab58828..1d12739 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -85,6 +85,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0, """ + test_support.record_original_stdout(sys.stdout) try: opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrlu:', ['help', 'verbose', 'quiet', 'generate', diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index a07ec10..04a778b 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -21,6 +21,17 @@ class TestSkipped(Error): verbose = 1 # Flag set to 0 by regrtest.py use_resources = None # Flag set to [] by regrtest.py +# _original_stdout is meant to hold stdout at the time regrtest began. +# This may be "the real" stdout, or IDLE's emulation of stdout, or whatever. +# The point is to have some flavor of stdout the user can actually see. +_original_stdout = None +def record_original_stdout(stdout): + global _original_stdout + _original_stdout = stdout + +def get_original_stdout(): + return _original_stdout or sys.stdout + def unload(name): try: del sys.modules[name] @@ -182,7 +193,7 @@ def run_doctest(module, verbosity=None): # Direct doctest output (normally just errors) to real stdout; doctest # output shouldn't be compared by regrtest. save_stdout = sys.stdout - sys.stdout = sys.__stdout__ + sys.stdout = get_original_stdout() try: f, t = doctest.testmod(module, verbose=verbosity) if f: -- cgit v0.12