bpo-32991: Restore expectation that inspect.getfile raises TypeError on namespace package (GH-5980)
* bpo-32991: Add test capturing expectation. DocTestFinder.find should return an empty list for doctests in a namespace package. * bpo-32991: Restore expectation that inspect.getfile on a namespace package raises TypeError.
This commit is contained in:
parent
6921e73e33
commit
b9650a04a8
|
@ -642,13 +642,13 @@ def cleandoc(doc):
|
|||
def getfile(object):
|
||||
"""Work out which source or compiled file an object was defined in."""
|
||||
if ismodule(object):
|
||||
if hasattr(object, '__file__'):
|
||||
if getattr(object, '__file__', None):
|
||||
return object.__file__
|
||||
raise TypeError('{!r} is a built-in module'.format(object))
|
||||
if isclass(object):
|
||||
if hasattr(object, '__module__'):
|
||||
object = sys.modules.get(object.__module__)
|
||||
if hasattr(object, '__file__'):
|
||||
if getattr(object, '__file__', None):
|
||||
return object.__file__
|
||||
raise TypeError('{!r} is a built-in class'.format(object))
|
||||
if ismethod(object):
|
||||
|
|
|
@ -7,6 +7,8 @@ import doctest
|
|||
import functools
|
||||
import os
|
||||
import sys
|
||||
import importlib
|
||||
import unittest
|
||||
|
||||
|
||||
# NOTE: There are some additional tests relating to interaction with
|
||||
|
@ -435,7 +437,7 @@ We'll simulate a __file__ attr that ends in pyc:
|
|||
>>> tests = finder.find(sample_func)
|
||||
|
||||
>>> print(tests) # doctest: +ELLIPSIS
|
||||
[<DocTest sample_func from ...:19 (1 example)>]
|
||||
[<DocTest sample_func from ...:21 (1 example)>]
|
||||
|
||||
The exact name depends on how test_doctest was invoked, so allow for
|
||||
leading path components.
|
||||
|
@ -681,6 +683,17 @@ Note here that 'bin', 'oct', and 'hex' are functions; 'float.as_integer_ratio',
|
|||
and 'int' is a type.
|
||||
"""
|
||||
|
||||
|
||||
class TestDocTestFinder(unittest.TestCase):
|
||||
|
||||
def test_empty_namespace_package(self):
|
||||
pkg_name = 'doctest_empty_pkg'
|
||||
os.mkdir(pkg_name)
|
||||
mod = importlib.import_module(pkg_name)
|
||||
assert doctest.DocTestFinder().find(mod) == []
|
||||
os.rmdir(pkg_name)
|
||||
|
||||
|
||||
def test_DocTestParser(): r"""
|
||||
Unit tests for the `DocTestParser` class.
|
||||
|
||||
|
@ -2945,6 +2958,10 @@ def test_main():
|
|||
from test import test_doctest
|
||||
support.run_doctest(test_doctest, verbosity=True)
|
||||
|
||||
# Run unittests
|
||||
support.run_unittest(__name__)
|
||||
|
||||
|
||||
def test_coverage(coverdir):
|
||||
trace = support.import_module('trace')
|
||||
tracer = trace.Trace(ignoredirs=[sys.base_prefix, sys.base_exec_prefix,],
|
||||
|
|
Loading…
Reference in New Issue