[4.6] Fix warnings with attrs 19.2 and fix object assertions (#… (#5944)
[4.6] Fix warnings with attrs 19.2 and fix object assertions (#5902)
This commit is contained in:
commit
1cc974c95d
|
@ -12,6 +12,7 @@ import _pytest._code
|
||||||
from ..compat import Sequence
|
from ..compat import Sequence
|
||||||
from _pytest import outcomes
|
from _pytest import outcomes
|
||||||
from _pytest._io.saferepr import saferepr
|
from _pytest._io.saferepr import saferepr
|
||||||
|
from _pytest.compat import ATTRS_EQ_FIELD
|
||||||
|
|
||||||
# The _reprcompare attribute on the util module is used by the new assertion
|
# The _reprcompare attribute on the util module is used by the new assertion
|
||||||
# interpretation code and assertion rewriter to detect this plugin was
|
# interpretation code and assertion rewriter to detect this plugin was
|
||||||
|
@ -374,7 +375,9 @@ def _compare_eq_cls(left, right, verbose, type_fns):
|
||||||
fields_to_check = [field for field, info in all_fields.items() if info.compare]
|
fields_to_check = [field for field, info in all_fields.items() if info.compare]
|
||||||
elif isattrs(left):
|
elif isattrs(left):
|
||||||
all_fields = left.__attrs_attrs__
|
all_fields = left.__attrs_attrs__
|
||||||
fields_to_check = [field.name for field in all_fields if field.cmp]
|
fields_to_check = [
|
||||||
|
field.name for field in all_fields if getattr(field, ATTRS_EQ_FIELD)
|
||||||
|
]
|
||||||
|
|
||||||
same = []
|
same = []
|
||||||
diff = []
|
diff = []
|
||||||
|
|
|
@ -13,6 +13,7 @@ import re
|
||||||
import sys
|
import sys
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
|
|
||||||
|
import attr
|
||||||
import py
|
import py
|
||||||
import six
|
import six
|
||||||
from six import text_type
|
from six import text_type
|
||||||
|
@ -406,8 +407,8 @@ def _setup_collect_fakemodule():
|
||||||
|
|
||||||
pytest.collect = ModuleType("pytest.collect")
|
pytest.collect = ModuleType("pytest.collect")
|
||||||
pytest.collect.__all__ = [] # used for setns
|
pytest.collect.__all__ = [] # used for setns
|
||||||
for attr in COLLECT_FAKEMODULE_ATTRIBUTES:
|
for attribute in COLLECT_FAKEMODULE_ATTRIBUTES:
|
||||||
setattr(pytest.collect, attr, getattr(pytest, attr))
|
setattr(pytest.collect, attribute, getattr(pytest, attribute))
|
||||||
|
|
||||||
|
|
||||||
if _PY2:
|
if _PY2:
|
||||||
|
@ -455,3 +456,9 @@ if six.PY2:
|
||||||
|
|
||||||
else:
|
else:
|
||||||
from functools import lru_cache # noqa: F401
|
from functools import lru_cache # noqa: F401
|
||||||
|
|
||||||
|
|
||||||
|
if getattr(attr, "__version_info__", ()) >= (19, 2):
|
||||||
|
ATTRS_EQ_FIELD = "eq"
|
||||||
|
else:
|
||||||
|
ATTRS_EQ_FIELD = "cmp"
|
||||||
|
|
|
@ -8,6 +8,7 @@ import attr
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from ..compat import ascii_escaped
|
from ..compat import ascii_escaped
|
||||||
|
from ..compat import ATTRS_EQ_FIELD
|
||||||
from ..compat import getfslineno
|
from ..compat import getfslineno
|
||||||
from ..compat import MappingMixin
|
from ..compat import MappingMixin
|
||||||
from ..compat import NOTSET
|
from ..compat import NOTSET
|
||||||
|
@ -377,7 +378,8 @@ class NodeKeywords(MappingMixin):
|
||||||
return "<NodeKeywords for node %s>" % (self.node,)
|
return "<NodeKeywords for node %s>" % (self.node,)
|
||||||
|
|
||||||
|
|
||||||
@attr.s(cmp=False, hash=False)
|
# mypy cannot find this overload, remove when on attrs>=19.2
|
||||||
|
@attr.s(hash=False, **{ATTRS_EQ_FIELD: False}) # type: ignore
|
||||||
class NodeMarkers(object):
|
class NodeMarkers(object):
|
||||||
"""
|
"""
|
||||||
internal structure for storing marks belonging to a node
|
internal structure for storing marks belonging to a node
|
||||||
|
|
|
@ -14,6 +14,7 @@ import pytest
|
||||||
from _pytest import outcomes
|
from _pytest import outcomes
|
||||||
from _pytest.assertion import truncate
|
from _pytest.assertion import truncate
|
||||||
from _pytest.assertion import util
|
from _pytest.assertion import util
|
||||||
|
from _pytest.compat import ATTRS_EQ_FIELD
|
||||||
|
|
||||||
PY3 = sys.version_info >= (3, 0)
|
PY3 = sys.version_info >= (3, 0)
|
||||||
|
|
||||||
|
@ -687,7 +688,7 @@ class TestAssert_reprcompare_attrsclass(object):
|
||||||
@attr.s
|
@attr.s
|
||||||
class SimpleDataObject(object):
|
class SimpleDataObject(object):
|
||||||
field_a = attr.ib()
|
field_a = attr.ib()
|
||||||
field_b = attr.ib(cmp=False)
|
field_b = attr.ib(**{ATTRS_EQ_FIELD: False})
|
||||||
|
|
||||||
left = SimpleDataObject(1, "b")
|
left = SimpleDataObject(1, "b")
|
||||||
right = SimpleDataObject(1, "b")
|
right = SimpleDataObject(1, "b")
|
||||||
|
|
Loading…
Reference in New Issue