Commit 6c542b73 authored by Tim Peters's avatar Tim Peters

Edward's latest checkins somehow managed to wipe out my previous latest

checkins.  Reapplying the latter changes.
parent a1ef6110
No related merge requests found
......@@ -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()
try:
sys.stdout = self._fakeout
save_set_trace = pdb.set_trace
pdb.set_trace = set_trace
try:
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()
......
......@@ -1044,7 +1044,6 @@ def test_pdb_set_trace():
... >>> calls_set_trace()
... '''
>>> test = parser.get_doctest(doc, globals(), "foo", "foo.py", 0)
>>> fake_stdin = tempfile.TemporaryFile(mode='w+')
>>> fake_stdin.write('\n'.join([
... 'up', # up out of pdb.set_trace
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment