Files
clang-p2996/lldb/test/functionalities/command_regex/TestCommandRegex.py
Greg Clayton 44d937820b Merging the iohandler branch back into main.
The many many benefits include:
1 - Input/Output/Error streams are now handled as real streams not a push style input
2 - auto completion in python embedded interpreter
3 - multi-line input for "script" and "expression" commands now allow you to edit previous/next lines using up and down arrow keys and this makes multi-line input actually a viable thing to use
4 - it is now possible to use curses to drive LLDB (please try the "gui" command)

We will need to deal with and fix any buildbot failures and tests and arise now that input/output and error are correctly hooked up in all cases.

llvm-svn: 200263
2014-01-27 23:43:24 +00:00

45 lines
1.5 KiB
Python

"""
Test lldb 'commands regex' command which allows the user to create a regular expression command.
"""
import os
import unittest2
import lldb
import pexpect
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."""
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()