radically simplify eq/neq with nodes by just using Pythons builtin "is" relationship.
The need for comparing two separately instantiated nodes seems to be historic (related to an already-gone mode of pytest-xdist which would re-collect nodes) and not actually needed anymore.
This commit is contained in:
parent
4f0879ff9b
commit
426907eafb
|
@ -272,21 +272,11 @@ class Node(object):
|
||||||
self._nodeid = x = self._makeid()
|
self._nodeid = x = self._makeid()
|
||||||
return x
|
return x
|
||||||
|
|
||||||
|
|
||||||
def _makeid(self):
|
def _makeid(self):
|
||||||
return self.parent.nodeid + "::" + self.name
|
return self.parent.nodeid + "::" + self.name
|
||||||
|
|
||||||
def __eq__(self, other):
|
|
||||||
if not isinstance(other, Node):
|
|
||||||
return False
|
|
||||||
return (self.__class__ == other.__class__ and
|
|
||||||
self.name == other.name and self.parent == other.parent)
|
|
||||||
|
|
||||||
def __ne__(self, other):
|
|
||||||
return not self == other
|
|
||||||
|
|
||||||
def __hash__(self):
|
def __hash__(self):
|
||||||
return hash((self.name, self.parent))
|
return hash(self.nodeid)
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -1087,24 +1087,6 @@ class Function(FunctionMixin, pytest.Item, FuncargnamesCompatAttr):
|
||||||
super(Function, self).setup()
|
super(Function, self).setup()
|
||||||
fillfixtures(self)
|
fillfixtures(self)
|
||||||
|
|
||||||
def __eq__(self, other):
|
|
||||||
try:
|
|
||||||
return (self.name == other.name and
|
|
||||||
self._args == other._args and
|
|
||||||
self.parent == other.parent and
|
|
||||||
self.obj == other.obj and
|
|
||||||
getattr(self, '_genid', None) ==
|
|
||||||
getattr(other, '_genid', None)
|
|
||||||
)
|
|
||||||
except AttributeError:
|
|
||||||
pass
|
|
||||||
return False
|
|
||||||
|
|
||||||
def __ne__(self, other):
|
|
||||||
return not self == other
|
|
||||||
|
|
||||||
def __hash__(self):
|
|
||||||
return hash((self.parent, self.name))
|
|
||||||
|
|
||||||
scope2props = dict(session=())
|
scope2props = dict(session=())
|
||||||
scope2props["module"] = ("fspath", "module")
|
scope2props["module"] = ("fspath", "module")
|
||||||
|
|
|
@ -287,22 +287,10 @@ class TestFunction:
|
||||||
pass
|
pass
|
||||||
f1 = pytest.Function(name="name", parent=session, config=config,
|
f1 = pytest.Function(name="name", parent=session, config=config,
|
||||||
args=(1,), callobj=func1)
|
args=(1,), callobj=func1)
|
||||||
|
assert f1 == f1
|
||||||
f2 = pytest.Function(name="name",config=config,
|
f2 = pytest.Function(name="name",config=config,
|
||||||
args=(1,), callobj=func2, parent=session)
|
callobj=func2, parent=session)
|
||||||
assert not f1 == f2
|
|
||||||
assert f1 != f2
|
assert f1 != f2
|
||||||
f3 = pytest.Function(name="name", parent=session, config=config,
|
|
||||||
args=(1,2), callobj=func2)
|
|
||||||
assert not f3 == f2
|
|
||||||
assert f3 != f2
|
|
||||||
|
|
||||||
assert not f3 == f1
|
|
||||||
assert f3 != f1
|
|
||||||
|
|
||||||
f1_b = pytest.Function(name="name", parent=session, config=config,
|
|
||||||
args=(1,), callobj=func1)
|
|
||||||
assert f1 == f1_b
|
|
||||||
assert not f1 != f1_b
|
|
||||||
|
|
||||||
def test_issue197_parametrize_emptyset(self, testdir):
|
def test_issue197_parametrize_emptyset(self, testdir):
|
||||||
testdir.makepyfile("""
|
testdir.makepyfile("""
|
||||||
|
|
Loading…
Reference in New Issue