summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py58
-rw-r--r--lldb/source/Commands/CommandObjectCommands.cpp13
2 files changed, 71 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py b/lldb/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py
new file mode 100644
index 00000000000..47d77b0e569
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py
@@ -0,0 +1,58 @@
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+
+class InvalidArgsCommandTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @no_debug_info_test
+ def test_script_add(self):
+ self.expect("command script add 1 2", error=True,
+ substrs=["'command script add' requires one argument"])
+
+ self.expect("command script add", error=True,
+ substrs=["'command script add' requires one argument"])
+
+ @no_debug_info_test
+ def test_script_clear(self):
+ self.expect("command script clear f", error=True,
+ substrs=["'command script clear' doesn't take any arguments"])
+
+ @no_debug_info_test
+ def test_script_list(self):
+ self.expect("command script list f", error=True,
+ substrs=["'command script list' doesn't take any arguments"])
+
+ @no_debug_info_test
+ def test_script_import(self):
+ self.expect("command script import", error=True,
+ substrs=["command script import needs one or more arguments"])
+
+ @no_debug_info_test
+ def test_alias(self):
+ self.expect("command alias", error=True,
+ substrs=["'command alias' requires at least two arguments"])
+
+ self.expect("command alias blub foo", error=True,
+ substrs=["error: invalid command given to 'command alias'. 'foo' does not begin with a valid command. No alias created."])
+
+ @no_debug_info_test
+ def test_unalias(self):
+ self.expect("command unalias", error=True,
+ substrs=["must call 'unalias' with a valid alias"])
+
+ @no_debug_info_test
+ def test_delete(self):
+ self.expect("command delete", error=True,
+ substrs=["must call 'command delete' with one or more valid user"])
+
+ @no_debug_info_test
+ def test_regex(self):
+ self.expect("command regex", error=True,
+ substrs=["usage: 'command regex <command-name> "])
+
+ @no_debug_info_test
+ def test_source(self):
+ self.expect("command source", error=True,
+ substrs=["'command source' takes exactly one executable filename argument."])
diff --git a/lldb/source/Commands/CommandObjectCommands.cpp b/lldb/source/Commands/CommandObjectCommands.cpp
index 11fed6edf32..d2f4cea1ad8 100644
--- a/lldb/source/Commands/CommandObjectCommands.cpp
+++ b/lldb/source/Commands/CommandObjectCommands.cpp
@@ -859,6 +859,7 @@ protected:
"defined regular expression command names",
GetCommandName().str().c_str());
result.SetStatus(eReturnStatusFailed);
+ return false;
}
auto command_name = args[0].ref;
@@ -1724,6 +1725,12 @@ public:
~CommandObjectCommandsScriptList() override = default;
bool DoExecute(Args &command, CommandReturnObject &result) override {
+ if (command.GetArgumentCount() != 0) {
+ result.AppendError("'command script list' doesn't take any arguments");
+ result.SetStatus(eReturnStatusFailed);
+ return false;
+ }
+
m_interpreter.GetHelp(result, CommandInterpreter::eCommandTypesUserDef);
result.SetStatus(eReturnStatusSuccessFinishResult);
@@ -1744,6 +1751,12 @@ public:
protected:
bool DoExecute(Args &command, CommandReturnObject &result) override {
+ if (command.GetArgumentCount() != 0) {
+ result.AppendError("'command script clear' doesn't take any arguments");
+ result.SetStatus(eReturnStatusFailed);
+ return false;
+ }
+
m_interpreter.RemoveAllUser();
result.SetStatus(eReturnStatusSuccessFinishResult);
OpenPOWER on IntegriCloud