summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-08-11 16:29:37 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-08-11 16:29:37 +0000
commit8aee8e060c8d155ea0798cb677e784a0a72fa7ab (patch)
treeab33e1c94f67caa28c76908ad4b1c31bdac08661
parent879133d28a2da2d675d72a3f4e178f5bc4c82594 (diff)
downloadfreeipa.git-8aee8e060c8d155ea0798cb677e784a0a72fa7ab.tar.gz
freeipa.git-8aee8e060c8d155ea0798cb677e784a0a72fa7ab.tar.xz
freeipa.git-8aee8e060c8d155ea0798cb677e784a0a72fa7ab.zip
106: Fixed some typos in cmd.__get_options(); added unit tests for cmd.options and cmd.normalize()
-rw-r--r--ipalib/public.py11
-rw-r--r--ipalib/tests/test_public.py37
2 files changed, 42 insertions, 6 deletions
diff --git a/ipalib/public.py b/ipalib/public.py
index baa1496a..10f91693 100644
--- a/ipalib/public.py
+++ b/ipalib/public.py
@@ -53,7 +53,8 @@ class option(plugable.Plugin):
))
__rules = None
- # type = unicode, int, float # Set in subclass
+ type = unicode
+ required = False
def normalize(self, value):
"""
@@ -132,7 +133,7 @@ class cmd(plugable.Plugin):
'autofill',
'__call__',
'get_doc',
- 'opt',
+ 'options',
))
__options = None
@@ -156,7 +157,9 @@ class cmd(plugable.Plugin):
"""
for cls in self.option_classes:
assert inspect.isclass(cls)
- yield plugable.Proxy(option, cls())
+ o = cls()
+ o.__lock__()
+ yield plugable.Proxy(option, o)
def __get_options(self):
"""
@@ -164,7 +167,7 @@ class cmd(plugable.Plugin):
"""
if self.__options is None:
self.__options = plugable.NameSpace(self.get_options())
- return self.__opt
+ return self.__options
options = property(__get_options)
def normalize_iter(self, kw):
diff --git a/ipalib/tests/test_public.py b/ipalib/tests/test_public.py
index 91d1f724..7e98b735 100644
--- a/ipalib/tests/test_public.py
+++ b/ipalib/tests/test_public.py
@@ -164,9 +164,12 @@ class test_cmd(ClassChecker):
_cls = public.cmd
def get_subcls(self):
- class option0(public.option):
+ class my_option(public.option):
+ def normalize(self, value):
+ return super(my_option, self).normalize(value).lower()
+ class option0(my_option):
pass
- class option1(public.option):
+ class option1(my_option):
pass
class example(self.cls):
option_classes = (option0, option1)
@@ -188,6 +191,36 @@ class test_cmd(ClassChecker):
assert proxy.implements(public.option)
assert i == 1
+ def test_options(self):
+ """
+ Tests the `options` property.
+ """
+ assert 'options' in self.cls.__public__ # Public
+ sub = self.subcls()
+ options = sub.options
+ assert type(options) == plugable.NameSpace
+ assert len(options) == 2
+ for name in ('option0', 'option1'):
+ assert name in options
+ proxy = options[name]
+ assert getattr(options, name) is proxy
+ assert isinstance(proxy, plugable.Proxy)
+ assert proxy.name == name
+
+ def test_normalize(self):
+ """
+ Tests the `normalize` method.
+ """
+ assert 'normalize' in self.cls.__public__ # Public
+ kw = dict(
+ option0='OPTION0',
+ option1='OPTION1',
+ option2='option2',
+ )
+ norm = dict((k, v.lower()) for (k, v) in kw.items())
+ sub = self.subcls()
+ assert sub.normalize(**kw) == norm
+
def test_obj():
cls = public.obj