remove the legacy code about im_func and generalize using fix and compat.getimfunc
This commit is contained in:
parent
2cf2dc3d95
commit
a0ce9a4441
|
@ -37,6 +37,7 @@ from _pytest.compat import (
|
||||||
getlocation,
|
getlocation,
|
||||||
enum,
|
enum,
|
||||||
get_default_arg_names,
|
get_default_arg_names,
|
||||||
|
getimfunc,
|
||||||
)
|
)
|
||||||
from _pytest.outcomes import fail
|
from _pytest.outcomes import fail
|
||||||
from _pytest.mark.structures import (
|
from _pytest.mark.structures import (
|
||||||
|
@ -681,14 +682,12 @@ class Class(PyCollector):
|
||||||
def setup(self):
|
def setup(self):
|
||||||
setup_class = _get_xunit_func(self.obj, "setup_class")
|
setup_class = _get_xunit_func(self.obj, "setup_class")
|
||||||
if setup_class is not None:
|
if setup_class is not None:
|
||||||
setup_class = getattr(setup_class, "im_func", setup_class)
|
setup_class = getimfunc(setup_class)
|
||||||
setup_class = getattr(setup_class, "__func__", setup_class)
|
|
||||||
setup_class(self.obj)
|
setup_class(self.obj)
|
||||||
|
|
||||||
fin_class = getattr(self.obj, "teardown_class", None)
|
fin_class = getattr(self.obj, "teardown_class", None)
|
||||||
if fin_class is not None:
|
if fin_class is not None:
|
||||||
fin_class = getattr(fin_class, "im_func", fin_class)
|
fin_class = getimfunc(fin_class)
|
||||||
fin_class = getattr(fin_class, "__func__", fin_class)
|
|
||||||
self.addfinalizer(lambda: fin_class(self.obj))
|
self.addfinalizer(lambda: fin_class(self.obj))
|
||||||
|
|
||||||
|
|
||||||
|
@ -1433,7 +1432,7 @@ class Function(FunctionMixin, nodes.Item, fixtures.FuncargnamesCompatAttr):
|
||||||
@property
|
@property
|
||||||
def function(self):
|
def function(self):
|
||||||
"underlying python 'function' object"
|
"underlying python 'function' object"
|
||||||
return getattr(self.obj, "im_func", self.obj)
|
return getimfunc(self.obj)
|
||||||
|
|
||||||
def _getobj(self):
|
def _getobj(self):
|
||||||
name = self.name
|
name = self.name
|
||||||
|
|
|
@ -9,6 +9,7 @@ import _pytest._code
|
||||||
from _pytest.config import hookimpl
|
from _pytest.config import hookimpl
|
||||||
from _pytest.outcomes import fail, skip, xfail
|
from _pytest.outcomes import fail, skip, xfail
|
||||||
from _pytest.python import transfer_markers, Class, Module, Function
|
from _pytest.python import transfer_markers, Class, Module, Function
|
||||||
|
from _pytest.compat import getimfunc
|
||||||
|
|
||||||
|
|
||||||
def pytest_pycollect_makeitem(collector, name, obj):
|
def pytest_pycollect_makeitem(collector, name, obj):
|
||||||
|
@ -53,7 +54,7 @@ class UnitTestCase(Class):
|
||||||
x = getattr(self.obj, name)
|
x = getattr(self.obj, name)
|
||||||
if not getattr(x, "__test__", True):
|
if not getattr(x, "__test__", True):
|
||||||
continue
|
continue
|
||||||
funcobj = getattr(x, "im_func", x)
|
funcobj = getimfunc(x)
|
||||||
transfer_markers(funcobj, cls, module)
|
transfer_markers(funcobj, cls, module)
|
||||||
yield TestCaseFunction(name, parent=self, callobj=funcobj)
|
yield TestCaseFunction(name, parent=self, callobj=funcobj)
|
||||||
foundsomething = True
|
foundsomething = True
|
||||||
|
|
|
@ -796,7 +796,7 @@ class TestMetafuncFunctional(object):
|
||||||
p = testdir.makepyfile(
|
p = testdir.makepyfile(
|
||||||
"""
|
"""
|
||||||
# assumes that generate/provide runs in the same process
|
# assumes that generate/provide runs in the same process
|
||||||
import sys, pytest
|
import sys, pytest, six
|
||||||
def pytest_generate_tests(metafunc):
|
def pytest_generate_tests(metafunc):
|
||||||
metafunc.addcall(param=metafunc)
|
metafunc.addcall(param=metafunc)
|
||||||
|
|
||||||
|
@ -815,11 +815,7 @@ class TestMetafuncFunctional(object):
|
||||||
def test_method(self, metafunc, pytestconfig):
|
def test_method(self, metafunc, pytestconfig):
|
||||||
assert metafunc.config == pytestconfig
|
assert metafunc.config == pytestconfig
|
||||||
assert metafunc.module.__name__ == __name__
|
assert metafunc.module.__name__ == __name__
|
||||||
if sys.version_info > (3, 0):
|
unbound = six.get_unbound_function(TestClass.test_method)
|
||||||
unbound = TestClass.test_method
|
|
||||||
else:
|
|
||||||
unbound = TestClass.test_method.im_func
|
|
||||||
# XXX actually have an unbound test function here?
|
|
||||||
assert metafunc.function == unbound
|
assert metafunc.function == unbound
|
||||||
assert metafunc.cls == TestClass
|
assert metafunc.cls == TestClass
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue