diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-13 01:52:17 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-13 01:52:17 +0000 |
commit | 0b5efa2a62623e09c7e8e5e97e0feafbc5e19823 (patch) | |
tree | 8c13150c8a0cf0bac69c340ae5358e2cb624330c | |
parent | c0b5069fa07889496786523c46b5b15181c26fee (diff) | |
download | freeipa.git-0b5efa2a62623e09c7e8e5e97e0feafbc5e19823.tar.gz freeipa.git-0b5efa2a62623e09c7e8e5e97e0feafbc5e19823.tar.xz freeipa.git-0b5efa2a62623e09c7e8e5e97e0feafbc5e19823.zip |
134: Added CLI.mcl (Max Command Length) property; added corresponding unit tests
-rw-r--r-- | ipalib/cli.py | 12 | ||||
-rw-r--r-- | ipalib/tests/test_cli.py | 41 |
2 files changed, 53 insertions, 0 deletions
diff --git a/ipalib/cli.py b/ipalib/cli.py index a0b8800f..898f385b 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -50,6 +50,7 @@ def _(arg): class CLI(object): __d = None + __mcl = None def __init__(self, api): self.__api = api @@ -103,3 +104,14 @@ class CLI(object): from_cli(m.group(1)), m.group(2), ) + + def __get_mcl(self): + """ + Returns the Max Command Length. + """ + if self.__mcl is None: + if self.__d is None: + return None + self.__mcl = max(len(k) for k in self.__d) + return self.__mcl + mcl = property(__get_mcl) diff --git a/ipalib/tests/test_cli.py b/ipalib/tests/test_cli.py index d56a4b19..c523e4e8 100644 --- a/ipalib/tests/test_cli.py +++ b/ipalib/tests/test_cli.py @@ -37,6 +37,35 @@ def test_from_cli(): assert f('user-add') == 'user_add' +def get_cmd_name(i): + return 'cmd_%d' % i + +class DummyCmd(object): + def __init__(self, name): + self.__name = name + + def __get_name(self): + return self.__name + name = property(__get_name) + +class DummyAPI(object): + def __init__(self, cnt): + self.__cmd = tuple(self.__cmd_iter(cnt)) + + def __get_cmd(self): + return self.__cmd + cmd = property(__get_cmd) + + def __cmd_iter(self, cnt): + for i in xrange(cnt): + yield DummyCmd(get_cmd_name(i)) + + def finalize(self): + pass + + + + class test_CLI(ClassChecker): """ Tests the `CLI` class. @@ -65,3 +94,15 @@ class test_CLI(ClassChecker): ) args = tuple('--%s=%s' % (cli.to_cli(k), v) for (k,v) in kw.items()) assert dict(o.parse_kw(args)) == kw + + def test_mcl(self): + """ + Tests the `mcl` (Max Command Length) property . + """ + cnt = 100 + api = DummyAPI(cnt) + len(api.cmd) == cnt + o = self.cls(api) + assert o.mcl is None + o.finalize() + assert o.mcl == 6 # len('cmd_99') |