summaryrefslogtreecommitdiffstats
path: root/ipalib/public.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-08-07 06:02:46 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-08-07 06:02:46 +0000
commit8cbd8343be843e2972b0f59250c148973f26a091 (patch)
treeb0f4cb48084777294664a57c5466b83d5e218b73 /ipalib/public.py
parent2cc88a7a3233d6bd70ec174ba976d093dc7f0d98 (diff)
downloadfreeipa.git-8cbd8343be843e2972b0f59250c148973f26a091.tar.gz
freeipa.git-8cbd8343be843e2972b0f59250c148973f26a091.tar.xz
freeipa.git-8cbd8343be843e2972b0f59250c148973f26a091.zip
75: Fixed opt.__rules_iter; added corresponding unit tests
Diffstat (limited to 'ipalib/public.py')
-rw-r--r--ipalib/public.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/ipalib/public.py b/ipalib/public.py
index baae83e4..9467feaf 100644
--- a/ipalib/public.py
+++ b/ipalib/public.py
@@ -58,17 +58,24 @@ class opt(plugable.ReadOnly):
def __get_rules(self):
if self.__rules is None:
- self.__rules = tuple(self.__rules_iter())
+ rules = sorted(
+ self.__rules_iter(),
+ key=lambda f: getattr(f, '__name__'),
+ )
+ object.__setattr__(self, '_opt__rules', tuple(rules))
return self.__rules
rules = property(__get_rules)
def __rules_iter(self):
- for name in dir(self):
+ for name in dir(self.__class__):
if name.startswith('_'):
continue
- attr = getattr(self, name)
- if is_rule(attr):
- yield attr
+ base_attr = getattr(self.__class__, name)
+ if is_rule(base_attr):
+ attr = getattr(self, name)
+ if is_rule(attr):
+ yield attr
+
def validate(self, value):
pass
@@ -77,7 +84,6 @@ class opt(plugable.ReadOnly):
-
class cmd(plugable.Plugin):
__public__ = frozenset((
'normalize',