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:
holger krekel 2013-12-07 16:39:53 +01:00
parent 4f0879ff9b
commit 426907eafb
3 changed files with 3 additions and 43 deletions

View File

@ -272,21 +272,11 @@ class Node(object):
self._nodeid = x = self._makeid()
return x
def _makeid(self):
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):
return hash((self.name, self.parent))
return hash(self.nodeid)
def setup(self):
pass

View File

@ -1087,24 +1087,6 @@ class Function(FunctionMixin, pytest.Item, FuncargnamesCompatAttr):
super(Function, self).setup()
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["module"] = ("fspath", "module")

View File

@ -287,22 +287,10 @@ class TestFunction:
pass
f1 = pytest.Function(name="name", parent=session, config=config,
args=(1,), callobj=func1)
assert f1 == f1
f2 = pytest.Function(name="name",config=config,
args=(1,), callobj=func2, parent=session)
assert not f1 == f2
callobj=func2, parent=session)
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):
testdir.makepyfile("""