cpython (3.2): Issue #12451: doctest.debug_script() doesn't create a temporary file anymore to
http://hg.python.org/cpython/rev/bafc5c7d24b2 changeset: 71093:bafc5c7d24b2 branch: 3.2 parent: 71091:1942f7c8f51c user: Victor Stinner <victor.stinner@haypocalc.com> date: Thu Jun 30 17:35:55 2011 +0200 summary: Issue #12451: doctest.debug_script() doesn't create a temporary file anymore to avoid encoding issues (it used the locale encoding, whereas UTF-8 should be). Remove also an unused import (warnings). files: Lib/doctest.py | 61 ++++++++++++++----------------------- Misc/NEWS | 3 + 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/Lib/doctest.py b/Lib/doctest.py --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -92,10 +92,15 @@ ] import __future__ - -import sys, traceback, inspect, linecache, os, re -import unittest, difflib, pdb, tempfile -import warnings +import difflib +import inspect +import linecache +import os +import pdb +import re +import sys +import traceback +import unittest from io import StringIO from collections import namedtuple @@ -2509,39 +2514,21 @@ "Debug a test script. `src` is the script, as a string." import pdb - # 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 exec() needs to open and read it. - srcfilename = tempfile.mktemp(".py", "doctestdebug") - f = open(srcfilename, 'w') - f.write(src) - f.close() - - try: - if globs: - globs = globs.copy() - else: - globs = {} - - if pm: - try: - with open(srcfilename) as f: - exec(f.read(), globs, globs) - except: - print(sys.exc_info()[1]) - p = pdb.Pdb(nosigint=True) - p.reset() - p.interaction(None, sys.exc_info()[2]) - else: - fp = open(srcfilename) - try: - script = fp.read() - finally: - fp.close() - pdb.Pdb(nosigint=True).run("exec(%r)" % script, globs, globs) - - finally: - os.remove(srcfilename) + if globs: + globs = globs.copy() + else: + globs = {} + + if pm: + try: + exec(src, globs, globs) + except: + print(sys.exc_info()[1]) + p = pdb.Pdb(nosigint=True) + p.reset() + p.interaction(None, sys.exc_info()[2]) + else: + pdb.Pdb(nosigint=True).run("exec(%r)" % src, globs, globs) def debug(module, name, pm=False): """Debug a single doctest docstring. diff --git a/Misc/NEWS b/Misc/NEWS --- a/Misc/NEWS +++ b/Misc/NEWS @@ -25,6 +25,9 @@ Library ------- +- Issue #12451: doctest.debug_script() doesn't create a temporary file + anymore to avoid encoding issues. + - Issue #12451: pydoc.synopsis() now reads the encoding cookie if available, to read the Python script from the right encoding. -- Repository URL: http://hg.python.org/cpython
participants (1)
-
victor.stinner