Merged revisions 67790 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r67790 | nick.coghlan | 2008-12-15 21:41:05 +1000 (Mon, 15 Dec 2008) | 1 line

  Issue #4197: Fix the remaining part of the doctest-in-zipfile problem by giving linecache access to the module globals when available
........
diff --git a/Lib/doctest.py b/Lib/doctest.py
index 22052ec..74ae795 100644
--- a/Lib/doctest.py
+++ b/Lib/doctest.py
@@ -813,7 +813,15 @@
         # 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:
@@ -1427,8 +1435,10 @@
         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