[Lldb-commits] [lldb] r338040 - Don't print two errors for unknown commands.
Raphael Isemann via lldb-commits
lldb-commits at lists.llvm.org
Thu Jul 26 09:32:05 PDT 2018
Author: teemperor
Date: Thu Jul 26 09:32:05 2018
New Revision: 338040
URL: http://llvm.org/viewvc/llvm-project?rev=338040&view=rev
Log:
Don't print two errors for unknown commands.
Summary:
We always print two error messages when we hit an unknown command. As the function
`CommandInterpreter::HandleCommand` that prints the second error message unconditionally called the `CommandInterpreter::ResolveCommandImpl` before (which prints the first error message), we can just remove
that second error message.
Fixes https://bugs.llvm.org/show_bug.cgi?id=38312
Reviewers: labath
Reviewed By: labath
Subscribers: labath, lldb-commits
Differential Revision: https://reviews.llvm.org/D49831
Added:
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
Modified:
lldb/trunk/source/Interpreter/CommandInterpreter.cpp
Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories?rev=338040&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories Thu Jul 26 09:32:05 2018
@@ -0,0 +1 @@
+cmdline
Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py?rev=338040&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py Thu Jul 26 09:32:05 2018
@@ -0,0 +1,39 @@
+"""
+Test how lldb reacts to wrong commands
+"""
+
+from __future__ import print_function
+
+import os
+import time
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class UnknownCommandTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @no_debug_info_test
+ def test_ambiguous_command(self):
+ command_interpreter = self.dbg.GetCommandInterpreter()
+ self.assertTrue(command_interpreter, VALID_COMMAND_INTERPRETER)
+ result = lldb.SBCommandReturnObject()
+
+ command_interpreter.HandleCommand("g", result)
+ self.assertFalse(result.Succeeded())
+ self.assertRegexpMatches(result.GetError(), "Ambiguous command 'g'. Possible matches:")
+ self.assertRegexpMatches(result.GetError(), "gui")
+ self.assertRegexpMatches(result.GetError(), "gdb-remote")
+ # FIXME: Somehow we get 'gui' and 'gdb-remote' twice in the output.
+
+ @no_debug_info_test
+ def test_unknown_command(self):
+ command_interpreter = self.dbg.GetCommandInterpreter()
+ self.assertTrue(command_interpreter, VALID_COMMAND_INTERPRETER)
+ result = lldb.SBCommandReturnObject()
+
+ command_interpreter.HandleCommand("qbert", result)
+ self.assertFalse(result.Succeeded())
+ self.assertEquals(result.GetError(), "error: 'qbert' is not a valid command.\n")
Modified: lldb/trunk/source/Interpreter/CommandInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/CommandInterpreter.cpp?rev=338040&r1=338039&r2=338040&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/CommandInterpreter.cpp (original)
+++ lldb/trunk/source/Interpreter/CommandInterpreter.cpp Thu Jul 26 09:32:05 2018
@@ -1693,33 +1693,6 @@ bool CommandInterpreter::HandleCommand(c
remainder.c_str());
cmd_obj->Execute(remainder.c_str(), result);
- } else {
- // We didn't find the first command object, so complete the first argument.
- Args command_args(command_string);
- StringList matches;
- unsigned cursor_char_position = strlen(command_args.GetArgumentAtIndex(0));
- CompletionRequest request(command_line, cursor_char_position, 0, -1,
- matches);
- int num_matches = HandleCompletionMatches(request);
-
- if (num_matches > 0) {
- std::string error_msg;
- error_msg.assign("ambiguous command '");
- error_msg.append(command_args.GetArgumentAtIndex(0));
- error_msg.append("'.");
-
- error_msg.append(" Possible completions:");
- for (int i = 0; i < num_matches; i++) {
- error_msg.append("\n\t");
- error_msg.append(matches.GetStringAtIndex(i));
- }
- error_msg.append("\n");
- result.AppendRawError(error_msg.c_str());
- } else
- result.AppendErrorWithFormat("Unrecognized command '%s'.\n",
- command_args.GetArgumentAtIndex(0));
-
- result.SetStatus(eReturnStatusFailed);
}
if (log)
More information about the lldb-commits
mailing list