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.
This commit is contained in:
Tim Peters 2001-09-25 20:05:11 +00:00
parent 698acf98fd
commit 8dee809410
2 changed files with 13 additions and 1 deletions

View File

@ -85,6 +85,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
""" """
test_support.record_original_stdout(sys.stdout)
try: try:
opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrlu:', opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrlu:',
['help', 'verbose', 'quiet', 'generate', ['help', 'verbose', 'quiet', 'generate',

View File

@ -21,6 +21,17 @@ class TestSkipped(Error):
verbose = 1 # Flag set to 0 by regrtest.py verbose = 1 # Flag set to 0 by regrtest.py
use_resources = None # Flag set to [] 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): def unload(name):
try: try:
del sys.modules[name] del sys.modules[name]
@ -182,7 +193,7 @@ def run_doctest(module, verbosity=None):
# Direct doctest output (normally just errors) to real stdout; doctest # Direct doctest output (normally just errors) to real stdout; doctest
# output shouldn't be compared by regrtest. # output shouldn't be compared by regrtest.
save_stdout = sys.stdout save_stdout = sys.stdout
sys.stdout = sys.__stdout__ sys.stdout = get_original_stdout()
try: try:
f, t = doctest.testmod(module, verbose=verbosity) f, t = doctest.testmod(module, verbose=verbosity)
if f: if f: