mirror of
https://github.com/python/cpython.git
synced 2025-08-02 16:13:13 +00:00
[3.11] gh-115392: Fix doctest reporting incorrect line numbers for decorated functions (GH-115440) (#115458)
gh-115392: Fix doctest reporting incorrect line numbers for decorated functions (GH-115440)
(cherry picked from commit bb791c7728
)
Co-authored-by: Brian Schubert <brianm.schubert@gmail.com>
This commit is contained in:
parent
cb941e1264
commit
c4e8ffb9a1
5 changed files with 23 additions and 1 deletions
|
@ -1118,7 +1118,7 @@ class DocTestFinder:
|
|||
obj = obj.fget
|
||||
if inspect.isfunction(obj) and getattr(obj, '__doc__', None):
|
||||
# We don't use `docstring` var here, because `obj` can be changed.
|
||||
obj = obj.__code__
|
||||
obj = inspect.unwrap(obj).__code__
|
||||
if inspect.istraceback(obj): obj = obj.tb_frame
|
||||
if inspect.isframe(obj): obj = obj.f_code
|
||||
if inspect.iscode(obj):
|
||||
|
|
10
Lib/test/test_doctest/decorator_mod.py
Normal file
10
Lib/test/test_doctest/decorator_mod.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
# This module is used in `doctest_lineno.py`.
|
||||
import functools
|
||||
|
||||
|
||||
def decorator(f):
|
||||
@functools.wraps(f)
|
||||
def inner():
|
||||
return f()
|
||||
|
||||
return inner
|
|
@ -67,3 +67,12 @@ class MethodWrapper:
|
|||
|
||||
# https://github.com/python/cpython/issues/99433
|
||||
str_wrapper = object().__str__
|
||||
|
||||
|
||||
# https://github.com/python/cpython/issues/115392
|
||||
from test.test_doctest.decorator_mod import decorator
|
||||
|
||||
@decorator
|
||||
@decorator
|
||||
def func_with_docstring_wrapped():
|
||||
"""Some unrelated info."""
|
||||
|
|
|
@ -687,6 +687,7 @@ It used to be broken for quite some time until `bpo-28249`.
|
|||
None test.test_doctest.doctest_lineno.MethodWrapper.method_without_docstring
|
||||
61 test.test_doctest.doctest_lineno.MethodWrapper.property_with_doctest
|
||||
4 test.test_doctest.doctest_lineno.func_with_docstring
|
||||
77 test.test_doctest.doctest_lineno.func_with_docstring_wrapped
|
||||
12 test.test_doctest.doctest_lineno.func_with_doctest
|
||||
None test.test_doctest.doctest_lineno.func_without_docstring
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fix a bug in :mod:`doctest` where incorrect line numbers would be
|
||||
reported for decorated functions.
|
Loading…
Add table
Add a link
Reference in a new issue