Get rid of the increasingly convoluted global tricks w/ sys.stdout, in
favor of local save/modify/restore. The test suite should run fine again.
This commit is contained in:
parent
5055545fc0
commit
342ca75d95
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue