mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Issue #6195: fix doctest to no longer try to read 'source' data from
binary files.
This commit is contained in:
parent
554290d920
commit
58641defe4
3 changed files with 34 additions and 12 deletions
|
@ -812,7 +812,17 @@ class DocTestFinder:
|
||||||
# DocTestFinder._find_lineno to find the line number for a
|
# DocTestFinder._find_lineno to find the line number for a
|
||||||
# given object's docstring.
|
# given object's docstring.
|
||||||
try:
|
try:
|
||||||
file = inspect.getsourcefile(obj) or inspect.getfile(obj)
|
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:
|
if module is not None:
|
||||||
# Supply the module globals in case the module was
|
# Supply the module globals in case the module was
|
||||||
# originally loaded via a PEP 302 loader and
|
# originally loaded via a PEP 302 loader and
|
||||||
|
@ -824,8 +834,6 @@ class DocTestFinder:
|
||||||
source_lines = linecache.getlines(file)
|
source_lines = linecache.getlines(file)
|
||||||
if not source_lines:
|
if not source_lines:
|
||||||
source_lines = None
|
source_lines = None
|
||||||
except TypeError:
|
|
||||||
source_lines = None
|
|
||||||
|
|
||||||
# Initialize globals, and merge in extraglobs.
|
# Initialize globals, and merge in extraglobs.
|
||||||
if globs is None:
|
if globs is None:
|
||||||
|
|
|
@ -2288,6 +2288,17 @@ using the optional keyword argument `encoding`:
|
||||||
>>> doctest.master = None # Reset master.
|
>>> 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
|
## Main
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
|
@ -24,6 +24,9 @@ Core and Builtins
|
||||||
Library
|
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
|
- Issue #5262: Fixed bug in next rollover time computation in
|
||||||
TimedRotatingFileHandler.
|
TimedRotatingFileHandler.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue