Issue #21740: Support wrapped callables in pydoc. Patch by Claudiu Popa.
This commit is contained in:
parent
a49d6a213e
commit
b532df62b9
|
@ -985,7 +985,8 @@ class DocTestFinder:
|
|||
for valname, val in obj.__dict__.items():
|
||||
valname = '%s.%s' % (name, valname)
|
||||
# Recurse to functions & classes.
|
||||
if ((inspect.isroutine(val) or inspect.isclass(val)) and
|
||||
if ((inspect.isroutine(inspect.unwrap(val))
|
||||
or inspect.isclass(val)) and
|
||||
self._from_module(module, val)):
|
||||
self._find(tests, val, valname, module, source_lines,
|
||||
globs, seen)
|
||||
|
|
|
@ -4,6 +4,7 @@ Test script for doctest.
|
|||
|
||||
from test import support
|
||||
import doctest
|
||||
import functools
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
@ -434,7 +435,7 @@ We'll simulate a __file__ attr that ends in pyc:
|
|||
>>> tests = finder.find(sample_func)
|
||||
|
||||
>>> print(tests) # doctest: +ELLIPSIS
|
||||
[<DocTest sample_func from ...:18 (1 example)>]
|
||||
[<DocTest sample_func from ...:19 (1 example)>]
|
||||
|
||||
The exact name depends on how test_doctest was invoked, so allow for
|
||||
leading path components.
|
||||
|
@ -2364,6 +2365,22 @@ def test_trailing_space_in_test():
|
|||
foo \n
|
||||
"""
|
||||
|
||||
class Wrapper:
|
||||
def __init__(self, func):
|
||||
self.func = func
|
||||
functools.update_wrapper(self, func)
|
||||
|
||||
def __call__(self, *args, **kwargs):
|
||||
self.func(*args, **kwargs)
|
||||
|
||||
@Wrapper
|
||||
def test_look_in_unwrapped():
|
||||
"""
|
||||
Docstrings in wrapped functions must be detected as well.
|
||||
|
||||
>>> 'one other test'
|
||||
'one other test'
|
||||
"""
|
||||
|
||||
def test_unittest_reportflags():
|
||||
"""Default unittest reporting flags can be set to control reporting
|
||||
|
|
Loading…
Reference in New Issue