diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2008-12-15 11:41:05 +0000 |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2008-12-15 11:41:05 +0000 |
commit | 68060013eaa13ddd26bf4eb804d3dce7b29813a9 (patch) | |
tree | 7d8ccb45af30f4201fffb3b5f2d15dcf37bebff5 /Lib/doctest.py | |
parent | 60b2e38b68e484830e3e3857197b0d9201c3ac22 (diff) | |
download | cpython-git-68060013eaa13ddd26bf4eb804d3dce7b29813a9.tar.gz |
Issue #4197: Fix the remaining part of the doctest-in-zipfile problem by giving linecache access to the module globals when available
Diffstat (limited to 'Lib/doctest.py')
-rw-r--r-- | Lib/doctest.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/Lib/doctest.py b/Lib/doctest.py index 8a5a22c1ca..3f2baa5434 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -820,7 +820,15 @@ class DocTestFinder: # given object's docstring. try: file = inspect.getsourcefile(obj) or inspect.getfile(obj) - source_lines = linecache.getlines(file) + 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 except TypeError: @@ -1433,8 +1441,10 @@ class DocTestRunner: d = self._name2ft for name, (f, t) in other._name2ft.items(): if name in d: - print "*** DocTestRunner.merge: '" + name + "' in both" \ - " testers; summing outcomes." + # Don't print here by default, since doing + # so breaks some of the buildbots + #print "*** DocTestRunner.merge: '" + name + "' in both" \ + # " testers; summing outcomes." f2, t2 = d[name] f = f + f2 t = t + t2 |