Fix uuidsentinel to follow getattr protocol
This patch changes the exception type raise by uuidsentinel when the sentinel name starts with '_'. The __getattr__ protocol requires to raise an AttributeError if the attribute value cannot be returned. Closes-Bug: #1885281 Change-Id: I1076a957a19507e7d96ef429c0ae5d0ee8a90e66
This commit is contained in:
parent
b9938230f9
commit
bc562f3393
@ -79,7 +79,7 @@ class _UUIDSentinels(object):
|
|||||||
|
|
||||||
def __getattr__(self, name):
|
def __getattr__(self, name):
|
||||||
if name.startswith('_'):
|
if name.startswith('_'):
|
||||||
raise ValueError('Sentinels must not start with _')
|
raise AttributeError('Sentinels must not start with _')
|
||||||
with self._lock:
|
with self._lock:
|
||||||
if name not in self._sentinels:
|
if name not in self._sentinels:
|
||||||
self._sentinels[name] = uuidutils.generate_uuid()
|
self._sentinels[name] = uuidutils.generate_uuid()
|
||||||
|
@ -80,5 +80,5 @@ class UUIDSentinelsTest(test_base.BaseTestCase):
|
|||||||
self.assertIsInstance(uuids.foo, str)
|
self.assertIsInstance(uuids.foo, str)
|
||||||
|
|
||||||
def test_with_underline_prefix(self):
|
def test_with_underline_prefix(self):
|
||||||
ex = self.assertRaises(ValueError, getattr, uuids, '_foo')
|
ex = self.assertRaises(AttributeError, getattr, uuids, '_foo')
|
||||||
self.assertIn("Sentinels must not start with _", six.text_type(ex))
|
self.assertIn("Sentinels must not start with _", six.text_type(ex))
|
||||||
|
Loading…
Reference in New Issue
Block a user