From 349fc660e796841a3d78b82bf4fa195a228da4c4 Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Tue, 9 Sep 2008 23:46:16 +0000 Subject: 275: Added Command.__check_args(); added basic unit tests for Command.args instance attribute --- ipalib/public.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'ipalib/public.py') diff --git a/ipalib/public.py b/ipalib/public.py index b22eff0e..003e0d72 100644 --- a/ipalib/public.py +++ b/ipalib/public.py @@ -214,12 +214,39 @@ class Command(plugable.Plugin): options = tuple() takes_args = tuple() + def __init__(self): + self.args = plugable.NameSpace(self.__check_args(), sort=False) + def get_args(self): return self.takes_args def get_options(self): return self.options + def __check_args(self): + optional = False + multivalue = False + for arg in self.get_args(): + if type(arg) is str: + arg = Option(arg, '', ipa_types.Unicode(), required=True) + elif not isinstance(arg, Option): + raise TypeError( + 'arg: need %r or %r; got %r' % (str, Option, arg) + ) + if optional and arg.required: + raise ValueError( + '%s: required argument after optional' % arg.name + ) + if multivalue: + raise ValueError( + '%s: only final argument can be multivalue' % arg.name + ) + if not arg.required: + optional = True + if arg.multivalue: + multivalue = True + yield arg + def __get_Option(self): """ Returns the NameSpace containing the Option instances. -- cgit