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

This commit is contained in:
Jenkins
2016-03-03 00:13:29 +00:00
committed by Gerrit Code Review
2 changed files with 6 additions and 3 deletions

View File

@@ -522,8 +522,6 @@ class Resource(RequestIdMixin):
# 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

@@ -48,9 +48,14 @@ class BaseTest(utils.TestCase):
self.assertEqual(4, base.getid(TmpObject))
def test_eq(self):
# Two resources of the same type with the same id: equal
# 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)
# 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)
# Two resoruces of different types: never equal