Fix failing staticmethod tests if they are inherited (#8205)
* Fix failing staticmethod tests if they are inherited * add comments, set default=None
This commit is contained in:
parent
7585221d55
commit
48c9a96a03
1
AUTHORS
1
AUTHORS
|
@ -29,6 +29,7 @@ Andy Freeland
|
||||||
Anthon van der Neut
|
Anthon van der Neut
|
||||||
Anthony Shaw
|
Anthony Shaw
|
||||||
Anthony Sottile
|
Anthony Sottile
|
||||||
|
Anton Grinevich
|
||||||
Anton Lodder
|
Anton Lodder
|
||||||
Antony Lee
|
Antony Lee
|
||||||
Arel Cordero
|
Arel Cordero
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fixed failing staticmethod test cases if they are inherited from a parent test class.
|
|
@ -163,7 +163,12 @@ def getfuncargnames(
|
||||||
# it's passed as an unbound method or function, remove the first
|
# it's passed as an unbound method or function, remove the first
|
||||||
# parameter name.
|
# parameter name.
|
||||||
if is_method or (
|
if is_method or (
|
||||||
cls and not isinstance(cls.__dict__.get(name, None), staticmethod)
|
# Not using `getattr` because we don't want to resolve the staticmethod.
|
||||||
|
# Not using `cls.__dict__` because we want to check the entire MRO.
|
||||||
|
cls
|
||||||
|
and not isinstance(
|
||||||
|
inspect.getattr_static(cls, name, default=None), staticmethod
|
||||||
|
)
|
||||||
):
|
):
|
||||||
arg_names = arg_names[1:]
|
arg_names = arg_names[1:]
|
||||||
# Remove any names that will be replaced with mocks.
|
# Remove any names that will be replaced with mocks.
|
||||||
|
|
|
@ -59,6 +59,20 @@ def test_getfuncargnames_staticmethod():
|
||||||
assert getfuncargnames(A.static, cls=A) == ("arg1", "arg2")
|
assert getfuncargnames(A.static, cls=A) == ("arg1", "arg2")
|
||||||
|
|
||||||
|
|
||||||
|
def test_getfuncargnames_staticmethod_inherited() -> None:
|
||||||
|
"""Test getfuncargnames for inherited staticmethods (#8061)"""
|
||||||
|
|
||||||
|
class A:
|
||||||
|
@staticmethod
|
||||||
|
def static(arg1, arg2, x=1):
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
class B(A):
|
||||||
|
pass
|
||||||
|
|
||||||
|
assert getfuncargnames(B.static, cls=B) == ("arg1", "arg2")
|
||||||
|
|
||||||
|
|
||||||
def test_getfuncargnames_partial():
|
def test_getfuncargnames_partial():
|
||||||
"""Check getfuncargnames for methods defined with functools.partial (#5701)"""
|
"""Check getfuncargnames for methods defined with functools.partial (#5701)"""
|
||||||
import functools
|
import functools
|
||||||
|
|
Loading…
Reference in New Issue