summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-08-13 06:25:42 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-08-13 06:25:42 +0000
commit337c9964d42066368460da9a7c0d770142e2d1c3 (patch)
tree9b9b1fd8671c93464250b1e1e66dfc5eb72b2b36 /ipalib
parent6924d5e25e237244e20554c380454a4029a0288f (diff)
downloadfreeipa-337c9964d42066368460da9a7c0d770142e2d1c3.tar.gz
freeipa-337c9964d42066368460da9a7c0d770142e2d1c3.tar.xz
freeipa-337c9964d42066368460da9a7c0d770142e2d1c3.zip
145: Added new CLI.parse() method; added corresponding unit tests
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/cli.py16
-rw-r--r--ipalib/tests/test_cli.py17
2 files changed, 32 insertions, 1 deletions
diff --git a/ipalib/cli.py b/ipalib/cli.py
index 6f0305d64..bf96d3698 100644
--- a/ipalib/cli.py
+++ b/ipalib/cli.py
@@ -97,7 +97,9 @@ class CLI(object):
sys.exit(2)
self.run_cmd(cmd, sys.argv[2:])
- def run_cmd(self, cmd, args):
+ def run_cmd(self, cmd, given):
+ print self.parse(given)
+ sys.exit(0)
kw = dict(self.parse_kw(args))
self[cmd](**kw)
@@ -110,6 +112,18 @@ class CLI(object):
m.group(2),
)
+ def parse(self, given):
+ args = []
+ kw = {}
+ for g in given:
+ m = re.match(r'^--([a-z][-a-z0-9]*)=(.+)$', g)
+ if m:
+ kw[from_cli(m.group(1))] = m.group(2)
+ else:
+ args.append(g)
+ return (args, kw)
+
+
def __get_mcl(self):
"""
Returns the Max Command Length.
diff --git a/ipalib/tests/test_cli.py b/ipalib/tests/test_cli.py
index e80dee43a..4e2942d7f 100644
--- a/ipalib/tests/test_cli.py
+++ b/ipalib/tests/test_cli.py
@@ -98,6 +98,23 @@ 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_parse(self):
+ """
+ Tests the `parse` method.
+ """
+ o = self.cls(None)
+ args = ['hello', 'naughty', 'nurse']
+ kw = dict(
+ first_name='Naughty',
+ last_name='Nurse',
+ )
+ opts = ['--%s=%s' % (k.replace('_', '-'), v) for (k, v) in kw.items()]
+ assert o.parse(args + []) == (args, {})
+ assert o.parse(opts + []) == ([], kw)
+ assert o.parse(args + opts) == (args, kw)
+ assert o.parse(opts + args) == (args, kw)
+
+
def test_mcl(self):
"""
Tests the `mcl` (Max Command Length) property .