Merge "Fix Resource.__eq__ mismatch semantics of object equal"

This commit is contained in:
Jenkins 2015-12-04 23:43:32 +00:00 committed by Gerrit Code Review
commit c6ff80ffe2
2 changed files with 8 additions and 4 deletions

View File

@ -517,8 +517,6 @@ class Resource(object):
# two resources of different types are not equal
if not isinstance(other, self.__class__):
return False
if hasattr(self, 'id') and hasattr(other, 'id'):
return self.id == other.id
return self._info == other._info
def is_loaded(self):

View File

@ -32,10 +32,16 @@ class TestBase(testtools.TestCase):
id = 4
self.assertEqual(4, base.getid(TmpObject))
def test_two_resources_with_same_id_are_equal(self):
# Two resources of the same type with the same id: equal
def test_two_resources_with_same_id_are_not_equal(self):
# Two resources with same ID: never equal if their info is not equal
r1 = base.Resource(None, {'id': 1, 'name': 'hi'})
r2 = base.Resource(None, {'id': 1, 'name': 'hello'})
self.assertNotEqual(r1, r2)
def test_two_resources_with_same_id_and_info_are_equal(self):
# Two resources with same ID: equal if their info is equal
r1 = base.Resource(None, {'id': 1, 'name': 'hello'})
r2 = base.Resource(None, {'id': 1, 'name': 'hello'})
self.assertEqual(r1, r2)
def test_two_resources_with_eq_info_are_equal(self):