[Lldb-commits] [PATCH] D49831: Don't print two errors for unknown commands.

2018-07-26 Thread Raphael Isemann via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL338040: Dont print two errors for unknown commands. 
(authored by teemperor, committed by ).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D49831?vs=157415=157509#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D49831

Files:
  
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories
  
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
  lldb/trunk/source/Interpreter/CommandInterpreter.cpp


Index: 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
===
--- 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
+++ 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
@@ -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")
Index: 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories
===
--- 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories
+++ 
lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories
@@ -0,0 +1 @@
+cmdline
Index: lldb/trunk/source/Interpreter/CommandInterpreter.cpp
===
--- lldb/trunk/source/Interpreter/CommandInterpreter.cpp
+++ lldb/trunk/source/Interpreter/CommandInterpreter.cpp
@@ -1693,33 +1693,6 @@
   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)


Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
===
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
@@ -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__)
+
+

[Lldb-commits] [PATCH] D49831: Don't print two errors for unknown commands.

2018-07-26 Thread Pavel Labath via Phabricator via lldb-commits
labath accepted this revision.
labath added a comment.
This revision is now accepted and ready to land.

Looks good. It would be nice to mention the name of that other function in the 
commit message.


https://reviews.llvm.org/D49831



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D49831: Don't print two errors for unknown commands.

2018-07-25 Thread Raphael Isemann via Phabricator via lldb-commits
teemperor created this revision.

We always print two error messages when we hit an unknown command. As the 
function with
one error message unconditionally calls the other, we can just remove that 
error message.

Fixes https://bugs.llvm.org/show_bug.cgi?id=38312


https://reviews.llvm.org/D49831

Files:
  packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories
  
packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
  source/Interpreter/CommandInterpreter.cpp


Index: source/Interpreter/CommandInterpreter.cpp
===
--- source/Interpreter/CommandInterpreter.cpp
+++ source/Interpreter/CommandInterpreter.cpp
@@ -1693,33 +1693,6 @@
   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)
Index: 
packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
===
--- /dev/null
+++ 
packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
@@ -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")
Index: packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories
===
--- /dev/null
+++ packages/Python/lldbsuite/test/functionalities/wrong_commands/.categories
@@ -0,0 +1 @@
+cmdline


Index: source/Interpreter/CommandInterpreter.cpp
===
--- source/Interpreter/CommandInterpreter.cpp
+++ source/Interpreter/CommandInterpreter.cpp
@@ -1693,33 +1693,6 @@
   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");
-