[Lldb-commits] [PATCH] D49831: Don't print two errors for unknown commands.
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.
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.
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"); -