From e7de41e4f00508602915e5142a0394da149a54dc Mon Sep 17 00:00:00 2001 From: Jan Cholasta Date: Feb 19 2013 16:08:19 +0000 Subject: Run interactive_prompt callbacks after CSV values are split. https://fedorahosted.org/freeipa/ticket/3334 --- diff --git a/ipalib/cli.py b/ipalib/cli.py index ca186c7..3d59e4a 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -1045,6 +1045,14 @@ class cli(backend.Executioner): if self.env.interactive: self.prompt_interactively(cmd, kw) kw = cmd.split_csv(**kw) + if self.env.interactive: + try: + callbacks = cmd.get_callbacks('interactive_prompt') + except AttributeError: + pass + else: + for callback in callbacks: + callback(cmd, kw) kw['version'] = API_VERSION self.load_files(cmd, kw) return kw @@ -1207,14 +1215,6 @@ class cli(backend.Executioner): param.label, param.confirm ) - try: - callbacks = cmd.get_callbacks('interactive_prompt') - except AttributeError: - pass - else: - for callback in callbacks: - callback(cmd, kw) - def load_files(self, cmd, kw): """ Load files from File parameters. diff --git a/tests/test_cmdline/test_cli.py b/tests/test_cmdline/test_cli.py index 06c6124..4d730d5 100644 --- a/tests/test_cmdline/test_cli.py +++ b/tests/test_cmdline/test_cli.py @@ -237,3 +237,31 @@ class TestCLIParsing(object): all=False, force=False, version=API_VERSION) + + def test_dnsrecord_del_comma(self): + try: + self.run_command( + 'dnszone_add', idnsname=u'test-example.com', + idnssoamname=u'ns.test-example.com', force=True) + except errors.NotFound: + raise nose.SkipTest('DNS is not configured') + try: + self.run_command( + 'dnsrecord_add', + dnszoneidnsname=u'test-example.com', + idnsname=u'test', + txtrecord=u'"A pretty little problem," said Holmes.') + with self.fake_stdin('no\nyes\n'): + self.check_command( + 'dnsrecord_del test-example.com test', + 'dnsrecord_del', + dnszoneidnsname=u'test-example.com', + idnsname=u'test', + del_all=False, + txtrecord=[u'"A pretty little problem," said Holmes.'], + structured=False, + raw=False, + all=False, + version=API_VERSION) + finally: + self.run_command('dnszone_del', idnsname=u'test-example.com')