Issue #6195: fix doctest to no longer try to read 'source' data from

binary files.
This commit is contained in:
R. David Murray 2009-06-12 15:33:19 +00:00
parent 554290d920
commit 58641defe4
3 changed files with 34 additions and 12 deletions

View file

@ -812,20 +812,28 @@ def find(self, obj, name=None, module=None, globs=None, extraglobs=None):
# DocTestFinder._find_lineno to find the line number for a
# given object's docstring.
try:
file = inspect.getsourcefile(obj) or inspect.getfile(obj)
if module is not None:
# Supply the module globals in case the module was
# originally loaded via a PEP 302 loader and
# file is not a valid filesystem path
source_lines = linecache.getlines(file, module.__dict__)
else:
# No access to a loader, so assume it's a normal
# filesystem path
source_lines = linecache.getlines(file)
if not source_lines:
source_lines = None
file = inspect.getsourcefile(obj)
except TypeError:
source_lines = None
else:
if not file:
# Check to see if it's one of our special internal "files"
# (see __patched_linecache_getlines).
file = inspect.getfile(obj)
if not file[0]+file[-2:] == '<]>': file = None
if file is None: source_lines = None
else:
if module is not None:
# Supply the module globals in case the module was
# originally loaded via a PEP 302 loader and
# file is not a valid filesystem path
source_lines = linecache.getlines(file, module.__dict__)
else:
# No access to a loader, so assume it's a normal
# filesystem path
source_lines = linecache.getlines(file)
if not source_lines:
source_lines = None
# Initialize globals, and merge in extraglobs.
if globs is None:

View file

@ -2288,6 +2288,17 @@ def test_testfile(): r"""
>>> doctest.master = None # Reset master.
"""
def test_testmod(): r"""
Tests for the testmod function. More might be useful, but for now we're just
testing the case raised by Issue 6195, where trying to doctest a C module would
fail with a UnicodeDecodeError because doctest tried to read the "source" lines
out of the binary module.
>>> import unicodedata
>>> doctest.testmod(unicodedata)
TestResults(failed=0, attempted=0)
"""
######################################################################
## Main
######################################################################

View file

@ -24,6 +24,9 @@ Core and Builtins
Library
-------
- Issue #6195: fixed doctest to no longer try to read 'source' data from
binary files.
- Issue #5262: Fixed bug in next rollover time computation in
TimedRotatingFileHandler.