From fda8ee0de5fc6416661134a261fb1a5a1569f93e Mon Sep 17 00:00:00 2001 From: Jelte Jansen Date: Thu, 22 Mar 2012 15:17:28 +0100 Subject: [PATCH] [1172] fix the cmd parser list index problem make the initial if>2 part of the while also add a space when glueing extraneous arguments together --- src/bin/bindctl/bindcmd.py | 12 ++++++------ src/bin/bindctl/tests/bindctl_test.py | 3 +-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/bin/bindctl/bindcmd.py b/src/bin/bindctl/bindcmd.py index 17c02adb73..0271c9cb0d 100644 --- a/src/bin/bindctl/bindcmd.py +++ b/src/bin/bindctl/bindcmd.py @@ -363,12 +363,12 @@ class BindCmdInterpreter(Cmd): if type(name) == int: # lump all extraneous arguments together as one big final one # todo: check if last param type is a string? - if (param_count > 2): - while (param_count > len(command_info.params) - 1): - params[param_count - 2] += params[param_count - 1] - del(params[param_count - 1]) - param_count = len(params) - cmd.params = params.copy() + while (param_count > 2 and + param_count > len(command_info.params) - 1): + params[param_count - 2] += " " + params[param_count - 1] + del(params[param_count - 1]) + param_count = len(params) + cmd.params = params.copy() # (-1, help is always in the all_params list) if name >= len(all_params) - 1: diff --git a/src/bin/bindctl/tests/bindctl_test.py b/src/bin/bindctl/tests/bindctl_test.py index cef35dc12e..31a6bdaa2e 100644 --- a/src/bin/bindctl/tests/bindctl_test.py +++ b/src/bin/bindctl/tests/bindctl_test.py @@ -180,12 +180,10 @@ class TestCmdSyntax(unittest.TestCase): self.my_assert_raise(isc.cc.data.DataTypeError, "zone set zone_name ='cn', port='cn'") self.no_assert_raise("zone reload_all") - def testCmdUnknownModuleSyntaxError(self): self.my_assert_raise(CmdUnknownModuleSyntaxError, "zoned d") self.my_assert_raise(CmdUnknownModuleSyntaxError, "dd dd ") - def testCmdUnknownCmdSyntaxError(self): self.my_assert_raise(CmdUnknownCmdSyntaxError, "zone dd") @@ -198,6 +196,7 @@ class TestCmdSyntax(unittest.TestCase): def testCmdUnknownParamSyntaxError(self): self.my_assert_raise(CmdUnknownParamSyntaxError, "zone load zone_d='cn'") self.my_assert_raise(CmdUnknownParamSyntaxError, "zone reload_all zone_name = 'cn'") + self.my_assert_raise(CmdUnknownParamSyntaxError, "zone help a b c") class TestModuleInfo(unittest.TestCase):