back in these go - thanks to Titus Brown for the fix
authorSkip Montanaro <skip@pobox.com>
Sat, 24 Nov 2007 14:31:16 +0000 (14:31 +0000)
committerSkip Montanaro <skip@pobox.com>
Sat, 24 Nov 2007 14:31:16 +0000 (14:31 +0000)
Lib/doctest.py
Lib/trace.py
Misc/NEWS

index d609c5def54f6697c79845be443e0573df237458..f50fce64117a9591d826e9d1eac1f2c062a1b8f8 100644 (file)
@@ -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
index 364e3f7bc99ab4951a540308e42418c7e60d2317..3f006052544b43b25f862e8e3c5313400f341067 100644 (file)
@@ -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]
index f856c1f29ba16c98825ef56c68827c9d1c8a15b8..30c45d142f0eb30d2cc044a7c5456fecf8d79844 100644 (file)
--- 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