]> granicus.if.org Git - python/commitdiff
Guido points out that sys.__stdout__ is a bit bucket under IDLE. So keep
authorTim Peters <tim.peters@gmail.com>
Tue, 25 Sep 2001 20:05:11 +0000 (20:05 +0000)
committerTim Peters <tim.peters@gmail.com>
Tue, 25 Sep 2001 20:05:11 +0000 (20:05 +0000)
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
Lib/test/test_support.py

index ab588285db5c35a8cf8c7a589aa2e0f2b9d74659..1d1273985cad5702fd316b65f6332c00c62a2a33 100755 (executable)
@@ -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',
index a07ec10471afe1c3b8c38550c08c98f58c52fb92..04a778bd1e81f54bcf3d06e078fcd4a931757f3a 100644 (file)
@@ -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: