Kaydet (Commit) 0f05517d authored tarafından Raymond Hettinger's avatar Raymond Hettinger

Issue 5021: doctest.testfile should set __name__

üst d17ad8d6
...@@ -111,7 +111,7 @@ def namedtuple(typename, field_names, verbose=False): ...@@ -111,7 +111,7 @@ def namedtuple(typename, field_names, verbose=False):
# where the named tuple is created. Bypass this step in enviroments where # where the named tuple is created. Bypass this step in enviroments where
# sys._getframe is not defined (Jython for example). # sys._getframe is not defined (Jython for example).
if hasattr(_sys, '_getframe'): if hasattr(_sys, '_getframe'):
result.__module__ = _sys._getframe(1).f_globals['__name__'] result.__module__ = _sys._getframe(1).f_globals.get('__name__', '__main__')
return result return result
......
...@@ -837,6 +837,8 @@ class DocTestFinder: ...@@ -837,6 +837,8 @@ class DocTestFinder:
globs = globs.copy() globs = globs.copy()
if extraglobs is not None: if extraglobs is not None:
globs.update(extraglobs) globs.update(extraglobs)
if '__name__' not in globs:
globs['__name__'] = '__main__' # provide a default module name
# Recursively expore `obj`, extracting DocTests. # Recursively expore `obj`, extracting DocTests.
tests = [] tests = []
...@@ -1947,6 +1949,8 @@ def testfile(filename, module_relative=True, name=None, package=None, ...@@ -1947,6 +1949,8 @@ def testfile(filename, module_relative=True, name=None, package=None,
globs = globs.copy() globs = globs.copy()
if extraglobs is not None: if extraglobs is not None:
globs.update(extraglobs) globs.update(extraglobs)
if '__name__' not in globs:
globs['__name__'] = '__main__'
if raise_on_error: if raise_on_error:
runner = DebugRunner(verbose=verbose, optionflags=optionflags) runner = DebugRunner(verbose=verbose, optionflags=optionflags)
......
...@@ -148,6 +148,12 @@ Library ...@@ -148,6 +148,12 @@ Library
operator module; use the abstract base classes instead. Also removed operator module; use the abstract base classes instead. Also removed
the repeat() function; use mul() instead. the repeat() function; use mul() instead.
- Issue 5021: doctest.testfile() did not create __name__ and
collections.namedtuple() relied on __name__ being defined.
- Backport importlib from Python 3.1. Only the import_module() function has
been backported to help facilitate transitions from 2.7 to 3.1.
- Issue #1885: distutils. When running sdist with --formats=tar,gztar - Issue #1885: distutils. When running sdist with --formats=tar,gztar
the tar file was overriden by the gztar one. the tar file was overriden by the gztar one.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment