diff options
Diffstat (limited to 'ipalib/frontend.py')
-rw-r--r-- | ipalib/frontend.py | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py index c28fa54ae..fadcb8632 100644 --- a/ipalib/frontend.py +++ b/ipalib/frontend.py @@ -913,16 +913,19 @@ class Command(HasParam): raise TypeError('%s: need a %r; got a %r: %r' % ( nice, dict, type(output), output) ) - if len(output) < len(self.output): - missing = sorted(set(self.output).difference(output)) - raise ValueError('%s: missing keys %r in %r' % ( - nice, missing, output) - ) - if len(output) > len(self.output): - extra = sorted(set(output).difference(self.output)) - raise ValueError('%s: unexpected keys %r in %r' % ( - nice, extra, output) - ) + expected_set = set(self.output) + actual_set = set(output) + if expected_set != actual_set: + missing = expected_set - actual_set + if missing: + raise ValueError('%s: missing keys %r in %r' % ( + nice, sorted(missing), output) + ) + extra = actual_set - expected_set + if extra: + raise ValueError('%s: unexpected keys %r in %r' % ( + nice, sorted(extra), output) + ) for o in self.output(): value = output[o.name] if not (o.type is None or isinstance(value, o.type)): |