| """ |
| Test lldb 'commands regex' command which allows the user to create a regular expression command. |
| """ |
| |
| import os |
| import unittest2 |
| import lldb |
| from lldbtest import * |
| |
| class CommandRegexTestCase(TestBase): |
| |
| mydir = TestBase.compute_mydir(__file__) |
| |
| def test_command_regex(self): |
| """Test a simple scenario of 'command regex' invocation and subsequent use.""" |
| import pexpect |
| prompt = "(lldb) " |
| regex_prompt = "Enter one of more sed substitution commands in the form: 's/<regex>/<subst>/'.\r\nTerminate the substitution list with an empty line.\r\n" |
| regex_prompt1 = "\r\n" |
| |
| child = pexpect.spawn('%s %s' % (self.lldbHere, self.lldbOption)) |
| # Turn on logging for what the child sends back. |
| if self.TraceOn(): |
| child.logfile_read = sys.stdout |
| # So that the spawned lldb session gets shutdown durng teardown. |
| self.child = child |
| |
| # Substitute 'Help!' for 'help' using the 'commands regex' mechanism. |
| child.expect_exact(prompt) |
| child.sendline("command regex 'Help__'") |
| child.expect_exact(regex_prompt) |
| child.sendline('s/^$/help/') |
| child.expect_exact(regex_prompt1) |
| child.sendline('') |
| # Help! |
| child.sendline('Help__') |
| # If we see the familiar 'help' output, the test is done. |
| child.expect('The following is a list of built-in, permanent debugger commands:') |
| |
| if __name__ == '__main__': |
| import atexit |
| lldb.SBDebugger.Initialize() |
| atexit.register(lambda: lldb.SBDebugger.Terminate()) |
| unittest2.main() |