diff options
author | Tim Peters <tim.peters@gmail.com> | 2004-08-09 16:43:36 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2004-08-09 16:43:36 (GMT) |
commit | 6c542b731cfe3e17991643bfc41bb785331e7e5c (patch) | |
tree | 325ef1cb60c69d0e6f0984e726d44ce7ea393dfb /Lib/doctest.py | |
parent | a1ef6110ba5355334431c76f6b4b3273a613aed2 (diff) | |
download | cpython-6c542b731cfe3e17991643bfc41bb785331e7e5c.zip cpython-6c542b731cfe3e17991643bfc41bb785331e7e5c.tar.gz cpython-6c542b731cfe3e17991643bfc41bb785331e7e5c.tar.bz2 |
Edward's latest checkins somehow managed to wipe out my previous latest
checkins. Reapplying the latter changes.
Diffstat (limited to 'Lib/doctest.py')
-rw-r--r-- | Lib/doctest.py | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/Lib/doctest.py b/Lib/doctest.py index 34db93a..80a61c5 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -1259,27 +1259,30 @@ class DocTestRunner: if compileflags is None: compileflags = _extract_future_flags(test.globs) + save_stdout = sys.stdout if out is None: - out = sys.stdout.write - saveout = sys.stdout - - # Note that don't save away the previous pdb.set_trace. Rather, - # we safe pdb.set_trace on import (see import section above). - # We then call and restore that original cersion. We do it this - # way to make this feature testable. If we kept and called the - # previous version, we'd end up restoring the original stdout, - # which is not what we want. + out = save_stdout.write + sys.stdout = self._fakeout + + # Patch pdb.set_trace to restore sys.stdout, so that interactive + # debugging output is visible (not still redirected to self._fakeout). + # Note that we run "the real" pdb.set_trace (captured at doctest + # import time) in our replacement. Because the current run() may + # run another doctest (and so on), the current pdb.set_trace may be + # our set_trace function, which changes sys.stdout. If we called + # a chain of those, we wouldn't be left with the save_stdout + # *this* run() invocation wants. def set_trace(): - sys.stdout = saveout + sys.stdout = save_stdout real_pdb_set_trace() + save_set_trace = pdb.set_trace + pdb.set_trace = set_trace try: - sys.stdout = self._fakeout - pdb.set_trace = set_trace return self.__run(test, compileflags, out) finally: - sys.stdout = saveout - pdb.set_trace = real_pdb_set_trace + sys.stdout = save_stdout + pdb.set_trace = save_set_trace if clear_globs: test.globs.clear() |