Fixed the __ne__ implementation in base.Resource
Any object of Resource class or its child class do not compare with None as expected. For example if a server has been found and is clearly not None, the test "server!=None" will be False. This was occuring because the __eq__ implementation was returning the 'NotImplemented' keyword and the __ne__ implementation was returning the not of __eq__, which in this case will return False as the expected python behavior for a the not of NotImplemented is False. Changed the __ne__ implementation to return the correct boolean value and added the test case that fails with the older implementation and passes in the current fix. Change-Id: I6bf5a6e9c9eed4bbcf6678467df19dfea560b4de Closes-Bug: #1648207
This commit is contained in:
parent
56bb3dae5f
commit
78e621faf7
@ -210,7 +210,9 @@ class Resource(RequestIdMixin):
|
||||
return self._info == other._info
|
||||
|
||||
def __ne__(self, other):
|
||||
return not self.__eq__(other)
|
||||
# Using not of '==' implementation because the not of
|
||||
# __eq__, when it returns NotImplemented, is returning False.
|
||||
return not self == other
|
||||
|
||||
def is_loaded(self):
|
||||
return self._loaded
|
||||
|
@ -71,6 +71,12 @@ class BaseTest(utils.TestCase):
|
||||
r2 = base.Resource(None, {'name': 'joe', 'age': 12})
|
||||
self.assertEqual(r1, r2)
|
||||
|
||||
def test_ne(self):
|
||||
# Two resources of different types: never equal
|
||||
r1 = base.Resource(None, {'id': 1, 'name': 'test'})
|
||||
r2 = object()
|
||||
self.assertNotEqual(r1, r2)
|
||||
|
||||
def test_findall_invalid_attribute(self):
|
||||
cs = fakes.FakeClient(api_versions.APIVersion("2.0"))
|
||||
# Make sure findall with an invalid attribute doesn't cause errors.
|
||||
|
Loading…
x
Reference in New Issue
Block a user