[lldb] Test 'command' commands and fix the found crashes

llvm-svn: 370712
This commit is contained in:
Raphael Isemann
2019-09-03 09:06:12 +00:00
parent 718f909ccd
commit d77ea5b297
2 changed files with 71 additions and 0 deletions

View File

@@ -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."])

View File

@@ -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);