[Python-checkins] r73389 - in python/branches/py3k: Lib/doctest.py Lib/test/test_doctest.py Misc/NEWS
r.david.murray
python-checkins at python.org
Fri Jun 12 17:33:19 CEST 2009
Author: r.david.murray
Date: Fri Jun 12 17:33:19 2009
New Revision: 73389
Log:
Issue #6195: fix doctest to no longer try to read 'source' data from
binary files.
Modified:
python/branches/py3k/Lib/doctest.py
python/branches/py3k/Lib/test/test_doctest.py
python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Lib/doctest.py
==============================================================================
--- python/branches/py3k/Lib/doctest.py (original)
+++ python/branches/py3k/Lib/doctest.py Fri Jun 12 17:33:19 2009
@@ -812,20 +812,28 @@
# 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:
Modified: python/branches/py3k/Lib/test/test_doctest.py
==============================================================================
--- python/branches/py3k/Lib/test/test_doctest.py (original)
+++ python/branches/py3k/Lib/test/test_doctest.py Fri Jun 12 17:33:19 2009
@@ -2288,6 +2288,17 @@
>>> 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
######################################################################
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS (original)
+++ python/branches/py3k/Misc/NEWS Fri Jun 12 17:33:19 2009
@@ -24,6 +24,9 @@
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.
More information about the Python-checkins
mailing list