summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSkip Montanaro <skip@pobox.com>2007-11-24 14:31:16 +0000
committerSkip Montanaro <skip@pobox.com>2007-11-24 14:31:16 +0000
commit664ad76a347cfa798b7229286706edd155c6aaa3 (patch)
tree1752478e5099aa03609abdc9b58478cd8a6f2181
parent30f61cbb1331615af829aea69d2586e990488525 (diff)
downloadcpython-git-664ad76a347cfa798b7229286706edd155c6aaa3.tar.gz
back in these go - thanks to Titus Brown for the fix
-rw-r--r--Lib/doctest.py13
-rw-r--r--Lib/trace.py2
-rw-r--r--Misc/NEWS3
3 files changed, 18 insertions, 0 deletions
diff --git a/Lib/doctest.py b/Lib/doctest.py
index d609c5def5..f50fce6411 100644
--- a/Lib/doctest.py
+++ b/Lib/doctest.py
@@ -320,8 +320,21 @@ class _OutputRedirectingPdb(pdb.Pdb):
"""
def __init__(self, out):
self.__out = out
+ self.__debugger_used = False
pdb.Pdb.__init__(self, stdout=out)
+ def set_trace(self, frame=None):
+ self.__debugger_used = True
+ if frame is None:
+ frame = sys._getframe().f_back
+ pdb.Pdb.set_trace(self, frame)
+
+ def set_continue(self):
+ # Calling set_continue unconditionally would break unit test
+ # coverage reporting, as Bdb.set_continue calls sys.settrace(None).
+ if self.__debugger_used:
+ pdb.Pdb.set_continue(self)
+
def trace_dispatch(self, *args):
# Redirect stdout to the given stream.
save_stdout = sys.stdout
diff --git a/Lib/trace.py b/Lib/trace.py
index 364e3f7bc9..3f00605254 100644
--- a/Lib/trace.py
+++ b/Lib/trace.py
@@ -286,6 +286,8 @@ class CoverageResults:
# skip some "files" we don't care about...
if filename == "<string>":
continue
+ if filename.startswith("<doctest "):
+ continue
if filename.endswith((".pyc", ".pyo")):
filename = filename[:-1]
diff --git a/Misc/NEWS b/Misc/NEWS
index f856c1f29b..30c45d142f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -41,6 +41,9 @@ Core and builtins
Library
-------
+- Issue 1429818: patch for trace and doctest modules so they play nicely
+ together.
+
- doctest mis-used __loader__.get_data(), assuming universal newlines was used.
- Issue #1705170: contextlib.contextmanager was still swallowing