From bc3831fddcd309789a3f5e81eba37d4f28219201 Mon Sep 17 00:00:00 2001 From: David Douard <david.douard@sdfa3.org> Date: Thu, 17 Mar 2022 14:19:50 +0100 Subject: [PATCH] Exclude name and email attributes from People comparison these fields are computed attributes and may be removed from the backend storage. Helps writing tests. --- swh/model/model.py | 4 ++-- swh/model/tests/test_model.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/swh/model/model.py b/swh/model/model.py index 7bed1c37..1e5f555e 100644 --- a/swh/model/model.py +++ b/swh/model/model.py @@ -289,8 +289,8 @@ class Person(BaseModel): object_type: Final = "person" fullname = attr.ib(type=bytes, validator=type_validator()) - name = attr.ib(type=Optional[bytes], validator=type_validator()) - email = attr.ib(type=Optional[bytes], validator=type_validator()) + name = attr.ib(type=Optional[bytes], validator=type_validator(), eq=False) + email = attr.ib(type=Optional[bytes], validator=type_validator(), eq=False) @classmethod def from_fullname(cls, fullname: bytes): diff --git a/swh/model/tests/test_model.py b/swh/model/tests/test_model.py index 6d97e59f..0efbcfe4 100644 --- a/swh/model/tests/test_model.py +++ b/swh/model/tests/test_model.py @@ -646,6 +646,18 @@ def test_git_author_line_to_author(): assert expected_person == Person.from_fullname(person) +def test_person_comparison(): + """Check only the fullname attribute is used to compare Person objects + + """ + person = Person(fullname=b"p1", name=None, email=None) + assert attr.evolve(person, name=b"toto") == person + assert attr.evolve(person, email=b"toto@example.com") == person + + person = Person(fullname=b"", name=b"toto", email=b"toto@example.com") + assert attr.evolve(person, fullname=b"dude") != person + + # Content -- GitLab