diff options
-rw-r--r-- | ipalib/frontend.py | 7 | ||||
-rw-r--r-- | tests/test_ipalib/test_frontend.py | 27 |
2 files changed, 34 insertions, 0 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py index 1cc2ea278..0abb35be9 100644 --- a/ipalib/frontend.py +++ b/ipalib/frontend.py @@ -810,6 +810,13 @@ class Command(HasParam): def get_output_params(self): for param in self._get_param_iterable('output_params', verb='has'): yield param + if self.params is None: + return + for param in self.params(): + if 'no_output' in param.flags: + continue + yield param + def output_for_cli(self, textui, output, *args, **options): if not isinstance(output, dict): diff --git a/tests/test_ipalib/test_frontend.py b/tests/test_ipalib/test_frontend.py index b5ecd053a..7c67d6ccc 100644 --- a/tests/test_ipalib/test_frontend.py +++ b/tests/test_ipalib/test_frontend.py @@ -28,6 +28,7 @@ from ipalib.constants import TYPE_ERROR from ipalib.base import NameSpace from ipalib import frontend, backend, plugable, errors, parameters, config from ipalib import output +from ipalib.parameters import Str def test_RULE_FLAG(): assert frontend.RULE_FLAG == 'validation_rule' @@ -654,6 +655,32 @@ class test_Command(ClassChecker): 'nested', 'Subclass', 'world', 4, dict, tuple, nope ) + def test_get_output_params(self): + """ + Test the `ipalib.frontend.Command.get_output_params` method. + """ + class example(self.cls): + has_output_params = ( + 'one', + 'two', + 'three', + ) + takes_args = ( + 'foo', + ) + takes_options = ( + Str('bar', flags='no_output'), + 'baz', + ) + + inst = example() + assert list(inst.get_output_params()) == ['one', 'two', 'three'] + inst.finalize() + assert list(inst.get_output_params()) == [ + 'one', 'two', 'three', inst.params.foo, inst.params.baz + ] + assert list(inst.output_params) == ['one', 'two', 'three', 'foo', 'baz'] + class test_LocalOrRemote(ClassChecker): """ |