diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-06-30 15:35:55 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-06-30 15:35:55 (GMT) |
commit | 12b8d14991d54deedac7d7ca51c7f95006e6a7bc (patch) | |
tree | 4f1366446bebca83d52ebee1ce7502d5fe3146ed /Lib/doctest.py | |
parent | e6c910e9537d405a11377a478556731b4eaec419 (diff) | |
download | cpython-12b8d14991d54deedac7d7ca51c7f95006e6a7bc.zip cpython-12b8d14991d54deedac7d7ca51c7f95006e6a7bc.tar.gz cpython-12b8d14991d54deedac7d7ca51c7f95006e6a7bc.tar.bz2 |
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).
Diffstat (limited to 'Lib/doctest.py')
-rw-r--r-- | Lib/doctest.py | 59 |
1 files changed, 23 insertions, 36 deletions
diff --git a/Lib/doctest.py b/Lib/doctest.py index 9eba4e0..f60b06d 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -92,10 +92,15 @@ __all__ = [ ] 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 @@ def debug_script(src, pm=False, globs=None): "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) + if globs: + globs = globs.copy() + else: + globs = {} - finally: - os.remove(srcfilename) + 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. |