Add sanity check to receives decorator

Add simple assertion to prevent simple mistakes like
I4a39f2e9d2f10639a209e7311fe44b94d369c5b1.

Change-Id: I3a18da4949dcd97096817c5e157cac99bb37c04d
This commit is contained in:
Kevin Benton
2017-06-14 05:12:54 -07:00
parent 4a3397997c
commit 870bc4e14c
2 changed files with 7 additions and 0 deletions

View File

@@ -68,6 +68,8 @@ def receives(resource, events):
@has_registry_receivers decorator to setup the __new__ method to
actually register the instance methods after initialization.
"""
assert isinstance(events, (list, tuple, set)), 'events must be collection'
def decorator(f):
for e in events:
_REGISTERED_CLASS_METHODS[f].append((resource, e))

View File

@@ -13,6 +13,7 @@
# under the License.
import mock
import testtools
from oslotest import base
@@ -99,6 +100,10 @@ class CallBacksManagerTestCase(base.BaseTestCase):
def test_object_new_not_broken(self):
CallbackClassWithParameters('dummy')
def test_no_strings_in_events_arg(self):
with testtools.ExpectedException(AssertionError):
registry.receives(resources.PORT, events.AFTER_CREATE)
class TestCallbackRegistryDispatching(base.BaseTestCase):