[Python-checkins] python/dist/src/Lib doctest.py,1.78,1.79

tim_one at users.sourceforge.net tim_one at users.sourceforge.net
Mon Aug 23 23:38:01 CEST 2004


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15923/Lib

Modified Files:
	doctest.py 
Log Message:
debug_script():  I changed this in haste before to take out the use of
NamedTemporaryFile (which can't work for this function's purposes on
Windows).  Leaving temp files behind wasn't a great idea either, though,
so try to clean up.  At least the test suite no longer leaves any of
these guys behind now.


Index: doctest.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/doctest.py,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -d -r1.78 -r1.79
--- doctest.py	22 Aug 2004 20:51:53 -0000	1.78
+++ doctest.py	23 Aug 2004 21:37:56 -0000	1.79
@@ -2342,26 +2342,33 @@
     "Debug a test script.  `src` is the script, as a string."
     import pdb
 
-    srcfilename = tempfile.mktemp("doctestdebug.py")
+    # Note that tempfile.NameTemporaryFile() cannot be used.  As the
+    # docs say, a file so created cannot be opened by name a second time
+    # on modern Windows boxes, and execfile() needs to open it.
+    srcfilename = tempfile.mktemp(".py", "doctestdebug")
     f = open(srcfilename, 'w')
     f.write(src)
     f.close()
 
-    if globs:
-        globs = globs.copy()
-    else:
-        globs = {}
+    try:
+        if globs:
+            globs = globs.copy()
+        else:
+            globs = {}
 
-    if pm:
-        try:
-            execfile(srcfilename, globs, globs)
-        except:
-            print sys.exc_info()[1]
-            pdb.post_mortem(sys.exc_info()[2])
-    else:
-        # Note that %r is vital here.  '%s' instead can, e.g., cause
-        # backslashes to get treated as metacharacters on Windows.
-        pdb.run("execfile(%r)" % srcfilename, globs, globs)
+        if pm:
+            try:
+                execfile(srcfilename, globs, globs)
+            except:
+                print sys.exc_info()[1]
+                pdb.post_mortem(sys.exc_info()[2])
+        else:
+            # Note that %r is vital here.  '%s' instead can, e.g., cause
+            # backslashes to get treated as metacharacters on Windows.
+            pdb.run("execfile(%r)" % srcfilename, globs, globs)
+
+    finally:
+        os.remove(srcfilename)
 
 def debug(module, name, pm=False):
     """Debug a single doctest docstring.



More information about the Python-checkins mailing list