avoid deprecation warnings for our internal accesses
This commit is contained in:
parent
22fac92ca0
commit
07cee24122
|
@ -32,6 +32,8 @@ Changes between 2.0.1 and 2.0.2
|
|||
- fixed typos in the docs (thanks Victor Garcia, Brianna Laugher) and particular
|
||||
thanks to Laura Creighton who also revieved parts of the documentation.
|
||||
|
||||
- more precise (avoiding of) deprecation warnings for node.Class|Function accesses
|
||||
|
||||
Changes between 2.0.0 and 2.0.1
|
||||
----------------------------------------------
|
||||
|
||||
|
|
|
@ -121,9 +121,6 @@ class HookProxy:
|
|||
|
||||
def compatproperty(name):
|
||||
def fget(self):
|
||||
#print "retrieving %r property from %s" %(name, self.fspath)
|
||||
py.log._apiwarn("2.0", "use pytest.%s for "
|
||||
"test collection and item classes" % name)
|
||||
return getattr(pytest, name)
|
||||
return property(fget, None, None,
|
||||
"deprecated attribute %r, use pytest.%s" % (name,name))
|
||||
|
@ -157,6 +154,14 @@ class Node(object):
|
|||
File = compatproperty("File")
|
||||
Item = compatproperty("Item")
|
||||
|
||||
def _getcustomclass(self, name):
|
||||
cls = getattr(self, name)
|
||||
if cls != getattr(pytest, name):
|
||||
py.log._apiwarn("2.0", "use of node.%s is deprecated, "
|
||||
"use pytest_pycollect_makeitem(...) to create custom "
|
||||
"collection nodes" % name)
|
||||
return cls
|
||||
|
||||
def __repr__(self):
|
||||
return "<%s %r>" %(self.__class__.__name__, getattr(self, 'name', None))
|
||||
|
||||
|
|
|
@ -73,7 +73,8 @@ def pytest_pycollect_makeitem(__multicall__, collector, name, obj):
|
|||
if collector._istestclasscandidate(name, obj):
|
||||
#if hasattr(collector.obj, 'unittest'):
|
||||
# return # we assume it's a mixin class for a TestCase derived one
|
||||
return collector.Class(name, parent=collector)
|
||||
Class = collector._getcustomclass("Class")
|
||||
return Class(name, parent=collector)
|
||||
elif collector.funcnamefilter(name) and hasattr(obj, '__call__'):
|
||||
if is_generator(obj):
|
||||
return Generator(name, parent=collector)
|
||||
|
@ -213,16 +214,18 @@ class PyCollectorMixin(PyobjMixin, pytest.Collector):
|
|||
extra.append(cls())
|
||||
plugins = self.getplugins() + extra
|
||||
gentesthook.pcall(plugins, metafunc=metafunc)
|
||||
Function = self._getcustomclass("Function")
|
||||
if not metafunc._calls:
|
||||
return self.Function(name, parent=self)
|
||||
return Function(name, parent=self)
|
||||
l = []
|
||||
for callspec in metafunc._calls:
|
||||
subname = "%s[%s]" %(name, callspec.id)
|
||||
function = self.Function(name=subname, parent=self,
|
||||
function = Function(name=subname, parent=self,
|
||||
callspec=callspec, callobj=funcobj, keywords={callspec.id:True})
|
||||
l.append(function)
|
||||
return l
|
||||
|
||||
|
||||
class Module(pytest.File, PyCollectorMixin):
|
||||
def _getobj(self):
|
||||
return self._memoizedcall('_obj', self._importtestmodule)
|
||||
|
@ -272,7 +275,7 @@ class Module(pytest.File, PyCollectorMixin):
|
|||
class Class(PyCollectorMixin, pytest.Collector):
|
||||
|
||||
def collect(self):
|
||||
return [self.Instance(name="()", parent=self)]
|
||||
return [self._getcustomclass("Instance")(name="()", parent=self)]
|
||||
|
||||
def setup(self):
|
||||
setup_class = getattr(self.obj, 'setup_class', None)
|
||||
|
|
|
@ -15,15 +15,10 @@ class TestCollector:
|
|||
""")
|
||||
recwarn.clear()
|
||||
assert modcol.Module == pytest.Module
|
||||
recwarn.pop(DeprecationWarning)
|
||||
assert modcol.Class == pytest.Class
|
||||
recwarn.pop(DeprecationWarning)
|
||||
assert modcol.Item == pytest.Item
|
||||
recwarn.pop(DeprecationWarning)
|
||||
assert modcol.File == pytest.File
|
||||
recwarn.pop(DeprecationWarning)
|
||||
assert modcol.Function == pytest.Function
|
||||
recwarn.pop(DeprecationWarning)
|
||||
|
||||
def test_check_equality(self, testdir):
|
||||
modcol = testdir.getmodulecol("""
|
||||
|
|
Loading…
Reference in New Issue