[Lldb-commits] [lldb] r370712 - [lldb] Test 'command' commands and fix the found crashes
Raphael Isemann via lldb-commits
lldb-commits at lists.llvm.org
Tue Sep 3 02:06:12 PDT 2019
Author: teemperor
Date: Tue Sep 3 02:06:12 2019
New Revision: 370712
URL: http://llvm.org/viewvc/llvm-project?rev=370712&view=rev
Log:
[lldb] Test 'command' commands and fix the found crashes
Added:
lldb/trunk/packages/Python/lldbsuite/test/commands/command/invalid-args/
lldb/trunk/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py
Modified:
lldb/trunk/source/Commands/CommandObjectCommands.cpp
Added: lldb/trunk/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py?rev=370712&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py Tue Sep 3 02:06:12 2019
@@ -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."])
Modified: lldb/trunk/source/Commands/CommandObjectCommands.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectCommands.cpp?rev=370712&r1=370711&r2=370712&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectCommands.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectCommands.cpp Tue Sep 3 02:06:12 2019
@@ -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);
More information about the lldb-commits
mailing list