Browse Source

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
tags/4.2.2^0
Balazs Gibizer 1 month ago
parent
commit
bc562f3393
2 changed files with 2 additions and 2 deletions
  1. +1
    -1
      oslo_utils/fixture.py
  2. +1
    -1
      oslo_utils/tests/test_fixture.py

+ 1
- 1
oslo_utils/fixture.py View File

@@ -79,7 +79,7 @@ class _UUIDSentinels(object):

def __getattr__(self, name):
if name.startswith('_'):
raise ValueError('Sentinels must not start with _')
raise AttributeError('Sentinels must not start with _')
with self._lock:
if name not in self._sentinels:
self._sentinels[name] = uuidutils.generate_uuid()


+ 1
- 1
oslo_utils/tests/test_fixture.py View File

@@ -80,5 +80,5 @@ class UUIDSentinelsTest(test_base.BaseTestCase):
self.assertIsInstance(uuids.foo, str)

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))

Loading…
Cancel
Save