diff options
author | Enrico Granata <egranata@apple.com> | 2015-05-27 05:04:35 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2015-05-27 05:04:35 +0000 |
commit | e87764f2470f6794e432506ebc8beb6ef78dd5fb (patch) | |
tree | 4bd62c58b76aeaf4d7c6155418838b9933caa56c /lldb/test | |
parent | 3273930d9acee986bc3d1bc24556354e26a797fd (diff) | |
download | bcm5719-llvm-e87764f2470f6794e432506ebc8beb6ef78dd5fb.tar.gz bcm5719-llvm-e87764f2470f6794e432506ebc8beb6ef78dd5fb.zip |
Add support for custom commands to set flags on themselves
This works for Python commands defined via a class (implement get_flags on your class) and C++ plugin commands (which can call SBCommand::GetFlags()/SetFlags())
Flags allow features such as not letting the command run if there's no target, or if the process is not stopped, ...
Commands could always check for these things themselves, but having these accessible via flags makes custom commands more consistent with built-in ones
llvm-svn: 238286
Diffstat (limited to 'lldb/test')
-rw-r--r-- | lldb/test/functionalities/command_script/TestCommandScript.py | 13 | ||||
-rw-r--r-- | lldb/test/functionalities/command_script/py_import | 2 | ||||
-rw-r--r-- | lldb/test/functionalities/command_script/welcome.py | 21 |
3 files changed, 23 insertions, 13 deletions
diff --git a/lldb/test/functionalities/command_script/TestCommandScript.py b/lldb/test/functionalities/command_script/TestCommandScript.py index fab1cb2b683..d4210b44f90 100644 --- a/lldb/test/functionalities/command_script/TestCommandScript.py +++ b/lldb/test/functionalities/command_script/TestCommandScript.py @@ -23,11 +23,17 @@ class CmdPythonTestCase(TestBase): self.pycmd_tests () def pycmd_tests (self): + self.runCmd("command source py_import") + + self.expect('targetname', + substrs = ['a.out'], matching=False, error=True) + exe = os.path.join (os.getcwd(), "a.out") self.expect("file " + exe, patterns = [ "Current executable set to .*a.out" ]) - self.runCmd("command source py_import") + self.expect('targetname', + substrs = ['a.out'], matching=True, error=False) # This is the function to remove the custom commands in order to have a # clean slate for the next test case. @@ -75,9 +81,6 @@ class CmdPythonTestCase(TestBase): self.expect('welcome Enrico', matching=False, error=True, substrs = ['Hello Enrico, welcome to LLDB']); - self.expect('targetname', - substrs = ['a.out']) - self.expect('targetname fail', error=True, substrs = ['a test for error in command']) @@ -122,7 +125,7 @@ class CmdPythonTestCase(TestBase): self.runCmd('command script add my_command --class welcome.WelcomeCommand') self.expect('my_command Blah', substrs = ['Hello Blah, welcome to LLDB']) - self.runCmd('command script add my_command --function welcome.target_name_impl') + self.runCmd('command script add my_command --class welcome.TargetnameCommand') self.expect('my_command', substrs = ['a.out']) self.runCmd("command script clear") diff --git a/lldb/test/functionalities/command_script/py_import b/lldb/test/functionalities/command_script/py_import index 6150e0239c9..169daacc1a8 100644 --- a/lldb/test/functionalities/command_script/py_import +++ b/lldb/test/functionalities/command_script/py_import @@ -3,7 +3,7 @@ script sys.path.append(os.path.join(os.getcwd(), os.pardir)) script import welcome script import bug11569 command script add welcome --class welcome.WelcomeCommand -command script add targetname --function welcome.target_name_impl +command script add targetname --class welcome.TargetnameCommand command script add longwait --function welcome.print_wait_impl command script import mysto.py --allow-reload command script add tell_sync --function welcome.check_for_synchro --synchronicity sync diff --git a/lldb/test/functionalities/command_script/welcome.py b/lldb/test/functionalities/command_script/welcome.py index 90bd0b8f7a9..c6d4ddcfd40 100644 --- a/lldb/test/functionalities/command_script/welcome.py +++ b/lldb/test/functionalities/command_script/welcome.py @@ -1,4 +1,4 @@ -import sys +import lldb, sys class WelcomeCommand(object): def __init__(self, debugger, session_dict): @@ -11,12 +11,19 @@ class WelcomeCommand(object): print >>result, ('Hello ' + args + ', welcome to LLDB'); return None; -def target_name_impl(debugger, args, result, dict): - target = debugger.GetSelectedTarget() - file = target.GetExecutable() - print >>result, ('Current target ' + file.GetFilename()) - if args == 'fail': - result.SetError('a test for error in command') +class TargetnameCommand(object): + def __init__(self, debugger, session_dict): + pass + + def __call__(self, debugger, args, exe_ctx, result): + target = debugger.GetSelectedTarget() + file = target.GetExecutable() + print >>result, ('Current target ' + file.GetFilename()) + if args == 'fail': + result.SetError('a test for error in command') + + def get_flags(self): + return lldb.eCommandRequiresTarget def print_wait_impl(debugger, args, result, dict): result.SetImmediateOutputFile(sys.stdout) |