diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-05 05:12:09 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-05 05:12:09 +0000 |
commit | d134b483066ae9d3a7e76d6e491f0f91eba6a954 (patch) | |
tree | 9e2a4a588b140c05cd8d29585a6b3c5355454f71 /ipalib | |
parent | 2b3c2238f6ecb5fc496acc50fc81f5b658d23c4b (diff) | |
download | freeipa.git-d134b483066ae9d3a7e76d6e491f0f91eba6a954.tar.gz freeipa.git-d134b483066ae9d3a7e76d6e491f0f91eba6a954.tar.xz freeipa.git-d134b483066ae9d3a7e76d6e491f0f91eba6a954.zip |
46: plugable.API now takes allowed base class in __init__ and creates Registrar at API.register, thereby coupling the two; updated correspending unit tests
Diffstat (limited to 'ipalib')
-rw-r--r-- | ipalib/plugable.py | 10 | ||||
-rw-r--r-- | ipalib/tests/test_plugable.py | 9 |
2 files changed, 13 insertions, 6 deletions
diff --git a/ipalib/plugable.py b/ipalib/plugable.py index 80349090..70743f5a 100644 --- a/ipalib/plugable.py +++ b/ipalib/plugable.py @@ -289,9 +289,15 @@ class Registrar(object): class API(ReadOnly): - def __init__(self, registrar): + def __init__(self, *allowed): + object.__setattr__(self, 'register', Registrar(*allowed)) object.__setattr__(self, '_API__plugins', []) - for (base, plugins) in registrar: + + def __call__(self): + """ + Finalize the registration, instantiate the plugins. + """ + for (base, plugins) in self.register: ns = NameSpace(self.__plugin_iter(base, plugins)) assert not hasattr(self, base.__name__) object.__setattr__(self, base.__name__, ns) diff --git a/ipalib/tests/test_plugable.py b/ipalib/tests/test_plugable.py index 27841e2e..2e87ea2c 100644 --- a/ipalib/tests/test_plugable.py +++ b/ipalib/tests/test_plugable.py @@ -334,7 +334,10 @@ def test_API(): def method(self, n): return n + 1 - r = plugable.Registrar(base0, base1) + api = plugable.API(base0, base1) + r = api.register + assert isinstance(r, plugable.Registrar) + assert read_only(api, 'register') is r class base0_plugin0(base0): pass @@ -360,10 +363,8 @@ def test_API(): pass r(base1_plugin2) - registrants = tuple(r) - # Test API instance: - api = plugable.API(r) + api() # Calling instance performs finalization def get_base(b): return 'base%d' % b |