[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