[bugfix] Checking MarkDecorator equality returns False for non-MarkDecorator object
This commit is contained in:
parent
09349c344e
commit
1e93089165
|
@ -330,7 +330,7 @@ class MarkDecorator:
|
||||||
return self.name # for backward-compat (2.4.1 had this attr)
|
return self.name # for backward-compat (2.4.1 had this attr)
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
return self.mark == other.mark
|
return self.mark == other.mark if isinstance(other, MarkDecorator) else False
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<MarkDecorator %r>" % (self.mark,)
|
return "<MarkDecorator %r>" % (self.mark,)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
The equality checking function (``__eq__``) of ``MarkDecorator`` returns ``False`` if one object is not an instance of ``MarkDecorator``.
|
|
@ -812,3 +812,15 @@ def test_legacy_transfer():
|
||||||
assert fake_method.fun
|
assert fake_method.fun
|
||||||
# pristine marks dont transfer
|
# pristine marks dont transfer
|
||||||
assert fake_method.pytestmark == [pytest.mark.fun.mark]
|
assert fake_method.pytestmark == [pytest.mark.fun.mark]
|
||||||
|
|
||||||
|
|
||||||
|
class TestMarkDecorator(object):
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('lhs, rhs, expected', [
|
||||||
|
(pytest.mark.foo(), pytest.mark.foo(), True),
|
||||||
|
(pytest.mark.foo(), pytest.mark.bar(), False),
|
||||||
|
(pytest.mark.foo(), 'bar', False),
|
||||||
|
('foo', pytest.mark.bar(), False)
|
||||||
|
])
|
||||||
|
def test__eq__(self, lhs, rhs, expected):
|
||||||
|
assert (lhs == rhs) == expected
|
||||||
|
|
Loading…
Reference in New Issue