From 8a6ece2ffbfc142beb1d08e09809c388b3ede160 Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Mon, 11 Aug 2008 17:57:07 +0000 Subject: [PATCH] 108: Changed cmd.default() so that it now only return dictionary of values for which defaults were generated; updated unit tests --- ipalib/public.py | 19 +++++++++---------- ipalib/tests/test_public.py | 7 +++---- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/ipalib/public.py b/ipalib/public.py index 17d00f048..d1c4fa2a9 100644 --- a/ipalib/public.py +++ b/ipalib/public.py @@ -183,16 +183,15 @@ class cmd(plugable.Plugin): def normalize(self, **kw): return dict(self.normalize_iter(kw)) - def default(self, **kw): - d = {} - for opt in self.options: - if opt.name not in kw: - value = opt.default(**kw) + def default_iter(self, kw): + for option in self.options: + if option.name not in kw: + value = option.default(**kw) if value is not None: - d[opt.name] = value - assert not set(kw).intersection(d) - kw.update(d) - return kw + yield(option.name, value) + + def default(self, **kw): + return dict(self.default_iter(kw)) def validate(self, **kw): for (key, value) in kw.items(): @@ -201,7 +200,7 @@ class cmd(plugable.Plugin): def __call__(self, **kw): kw = self.normalize(**kw) - kw = self.default(**kw) + kw.update(self.default(**kw)) self.validate(**kw) self.execute(**kw) diff --git a/ipalib/tests/test_public.py b/ipalib/tests/test_public.py index 8f0ac9633..4f3d382f6 100644 --- a/ipalib/tests/test_public.py +++ b/ipalib/tests/test_public.py @@ -241,14 +241,13 @@ class test_cmd(ClassChecker): fill = dict( default_from='the default', ) - filled = dict( + default = dict( option0='the default', option1='the default', - default_from='the default', ) sub = self.subcls() - assert sub.default(**no_fill) == no_fill - assert sub.default(**fill) == filled + assert sub.default(**no_fill) == {} + assert sub.default(**fill) == default def test_obj():