diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-05 21:10:49 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-05 21:10:49 +0000 |
commit | f193dcba277e10b204f0e70a6cb0bcf3a661b8dc (patch) | |
tree | 6610f96e6c88b73af0055cc6f4ff4e4f72f161b7 /ipalib | |
parent | 907107001bb0db662a743cb678c2adda3381d7b7 (diff) | |
download | freeipa-f193dcba277e10b204f0e70a6cb0bcf3a661b8dc.tar.gz freeipa-f193dcba277e10b204f0e70a6cb0bcf3a661b8dc.tar.xz freeipa-f193dcba277e10b204f0e70a6cb0bcf3a661b8dc.zip |
49: Added public.PublicAPI class; added some basic unit tests for same
Diffstat (limited to 'ipalib')
-rw-r--r-- | ipalib/public.py | 26 | ||||
-rw-r--r-- | ipalib/run.py | 4 | ||||
-rw-r--r-- | ipalib/tests/test_public.py | 17 |
3 files changed, 38 insertions, 9 deletions
diff --git a/ipalib/public.py b/ipalib/public.py index 99d890000..b9f858fb9 100644 --- a/ipalib/public.py +++ b/ipalib/public.py @@ -26,25 +26,32 @@ import re import plugable -class cmd_proxy(plugable.Proxy): +class generic_proxy(plugable.Proxy): __slots__ = ( 'get_label', - 'get_summary', - 'get_help', - 'get_options', + ) + + +class cmd_proxy(plugable.Proxy): + __slots__ = ( + '__call__', ) class cmd(plugable.Plugin): proxy = cmd_proxy + def __call__(self, *args, **kw): + print repr(self) + class obj(plugable.Plugin): - pass + proxy = generic_proxy class attr(plugable.Plugin): __obj = None + proxy = generic_proxy def __init__(self): m = re.match('^([a-z]+)_([a-z]+)$', self.__class__.__name__) @@ -74,8 +81,13 @@ class attr(plugable.Plugin): class mthd(attr, cmd): - pass + proxy = generic_proxy class prop(attr): - pass + proxy = generic_proxy + + +class PublicAPI(plugable.API): + def __init__(self): + super(PublicAPI, self).__init__(cmd, obj, prop) diff --git a/ipalib/run.py b/ipalib/run.py index ffaa655f4..eaaaed9c8 100644 --- a/ipalib/run.py +++ b/ipalib/run.py @@ -22,7 +22,7 @@ Standard run-time instances of importard classes. This is where plugins should access the registration API. """ -import base +import public # The standard API instance -api = base.API() +api = public.PublicAPI() diff --git a/ipalib/tests/test_public.py b/ipalib/tests/test_public.py index 5ea18430b..bfe951aba 100644 --- a/ipalib/tests/test_public.py +++ b/ipalib/tests/test_public.py @@ -64,3 +64,20 @@ def test_mthd(): def test_prop(): cls = public.prop assert issubclass(cls, public.attr) + + +def test_PublicAPI(): + cls = public.PublicAPI + assert issubclass(cls, plugable.API) + + api = cls() + + class cmd1(public.cmd): + pass + api.register(cmd1) + + class cmd2(public.cmd): + pass + api.register(cmd2) + + api() |