]> granicus.if.org Git - python/commitdiff
Get rid of the increasingly convoluted global tricks w/ sys.stdout, in
authorTim Peters <tim.peters@gmail.com>
Tue, 25 Sep 2001 19:13:20 +0000 (19:13 +0000)
committerTim Peters <tim.peters@gmail.com>
Tue, 25 Sep 2001 19:13:20 +0000 (19:13 +0000)
favor of local save/modify/restore.  The test suite should run fine again.

Lib/test/regrtest.py
Lib/test/test_support.py

index d13ff4cfb9745388879e80e5ec547139765550b1..ab588285db5c35a8cf8c7a589aa2e0f2b9d74659 100755 (executable)
@@ -287,7 +287,7 @@ def runtest(test, generate, verbose, quiet, testdir = None):
     else:
         cfp =  StringIO.StringIO()
     try:
-        sys.save_stdout = sys.stdout
+        save_stdout = sys.stdout
         try:
             if cfp:
                 sys.stdout = cfp
@@ -301,7 +301,7 @@ def runtest(test, generate, verbose, quiet, testdir = None):
             if indirect_test is not None:
                 indirect_test()
         finally:
-            sys.stdout = sys.save_stdout
+            sys.stdout = save_stdout
     except (ImportError, test_support.TestSkipped), msg:
         if not quiet:
             print "test", test, "skipped --", msg
index 5a5e33c773d4c0f244303c6e18a9dc9da20eea2d..a07ec10471afe1c3b8c38550c08c98f58c52fb92 100644 (file)
@@ -2,8 +2,6 @@
 
 import sys
 
-sys.save_stdout = sys.stdout
-
 class Error(Exception):
     """Base class for regression test exceptions."""
 
@@ -23,26 +21,6 @@ class TestSkipped(Error):
 verbose = 1              # Flag set to 0 by regrtest.py
 use_resources = None       # Flag set to [] by regrtest.py
 
-# _output_comparison controls whether regrtest will try to compare stdout
-# with an expected-output file.  For straight regrtests, it should.
-# The doctest driver resets this flag by calling deny_output_comparison().
-# Note that this control is in addition to verbose mode:  output will be
-# compared if and only if _output_comparison is true and verbose mode is
-# not in effect.
-_output_comparison = 1
-
-def deny_output_comparison():
-    global _output_comparison
-    _output_comparison = 0
-    sys.stdout = sys.save_stdout
-
-# regrtest's interface to _output_comparison.
-def output_comparison_denied():
-    global _output_comparison
-    denied = not _output_comparison
-    _output_comparison = 1
-    return denied
-
 def unload(name):
     try:
         del sys.modules[name]
@@ -201,7 +179,13 @@ def run_doctest(module, verbosity=None):
     else:
         verbosity = None
 
-    deny_output_comparison()
-    f, t = doctest.testmod(module, verbose=verbosity)
-    if f:
-        raise TestFailed("%d of %d doctests failed" % (f, t))
+    # 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__
+    try:
+        f, t = doctest.testmod(module, verbose=verbosity)
+        if f:
+            raise TestFailed("%d of %d doctests failed" % (f, t))
+    finally:
+        sys.stdout = save_stdout