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); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits