[Lldb-commits] [lldb] r275080 - Fix an issue where one could not define a Python command with the same name as an existing alias (or rather, one could but the results of invoking the command were far from satisfactory)
Enrico Granata via lldb-commits
lldb-commits at lists.llvm.org
Mon Jul 11 10:36:55 PDT 2016
Author: enrico
Date: Mon Jul 11 12:36:55 2016
New Revision: 275080
URL: http://llvm.org/viewvc/llvm-project?rev=275080&view=rev
Log:
Fix an issue where one could not define a Python command with the same name as an existing alias (or rather, one could but the results of invoking the command were far from satisfactory)
Added:
lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/
lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/.categories
lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/TestCommandScriptAlias.py
lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/tcsacmd.py
Modified:
lldb/trunk/source/Interpreter/CommandInterpreter.cpp
Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/.categories
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/.categories?rev=275080&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/.categories (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/.categories Mon Jul 11 12:36:55 2016
@@ -0,0 +1 @@
+cmdline
Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/TestCommandScriptAlias.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/TestCommandScriptAlias.py?rev=275080&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/TestCommandScriptAlias.py (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/TestCommandScriptAlias.py Mon Jul 11 12:36:55 2016
@@ -0,0 +1,37 @@
+"""
+Test lldb Python commands.
+"""
+
+from __future__ import print_function
+
+
+import os, time
+import lldb
+from lldbsuite.test.lldbtest import *
+
+class CommandScriptAliasTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ def test (self):
+ self.pycmd_tests ()
+
+ def pycmd_tests (self):
+ self.runCmd("command script import tcsacmd.py")
+ self.runCmd("command script add -f tcsacmd.some_command_here attach")
+
+ # This is the function to remove the custom commands in order to have a
+ # clean slate for the next test case.
+ def cleanup():
+ self.runCmd('command script delete attach', check=False)
+
+ # Execute the cleanup function during test case tear down.
+ self.addTearDownHook(cleanup)
+
+ # We don't want to display the stdout if not in TraceOn() mode.
+ if not self.TraceOn():
+ self.HideStdout()
+
+ self.expect('attach a', substrs = ['Victory is mine']);
+ self.runCmd("command script delete attach")
+ self.runCmd('attach noprocessexistswiththisname', check=False) # this can't crash but we don't care whether the actual attach works
Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/tcsacmd.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/tcsacmd.py?rev=275080&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/tcsacmd.py (added)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/command_script_alias/tcsacmd.py Mon Jul 11 12:36:55 2016
@@ -0,0 +1,11 @@
+from __future__ import print_function
+import lldb, sys
+
+def some_command_here(debugger, command, result, d):
+ if command == "a":
+ print("Victory is mine", file=result)
+ return True
+ else:
+ print("Sadness for all", file=result)
+ return False
+
Modified: lldb/trunk/source/Interpreter/CommandInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/CommandInterpreter.cpp?rev=275080&r1=275079&r2=275080&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/CommandInterpreter.cpp (original)
+++ lldb/trunk/source/Interpreter/CommandInterpreter.cpp Mon Jul 11 12:36:55 2016
@@ -3172,8 +3172,12 @@ CommandInterpreter::ResolveCommandImpl(s
if (cmd_obj == nullptr)
{
std::string full_name;
- if (GetAliasFullName(next_word.c_str(), full_name))
+ bool is_alias = GetAliasFullName(next_word.c_str(), full_name);
+ cmd_obj = GetCommandObject(next_word.c_str(), &matches);
+ bool is_real_command = (is_alias == false) || (cmd_obj != nullptr && cmd_obj->IsAlias() == false);
+ if (!is_real_command)
{
+ matches.Clear();
std::string alias_result;
cmd_obj = BuildAliasResult(full_name.c_str(), scratch_command, alias_result, result);
revised_command_line.Printf("%s", alias_result.c_str());
@@ -3185,7 +3189,8 @@ CommandInterpreter::ResolveCommandImpl(s
}
else
{
- cmd_obj = GetCommandObject(next_word.c_str(), &matches);
+ if (!cmd_obj)
+ cmd_obj = GetCommandObject(next_word.c_str(), &matches);
if (cmd_obj)
{
actual_cmd_name_len += strlen(cmd_obj->GetCommandName());
More information about the lldb-commits
mailing list