|  | import lldb | 
|  | from lldbtest import * | 
|  | import lldbutil | 
|  | import os | 
|  | import unittest2 | 
|  | import sys | 
|  | import pexpect | 
|  |  | 
|  | class PExpectTest(TestBase): | 
|  |  | 
|  | mydir = TestBase.compute_mydir(__file__) | 
|  |  | 
|  | def setUp(self): | 
|  | TestBase.setUp(self) | 
|  |  | 
|  | def launchArgs(self): | 
|  | pass | 
|  |  | 
|  | def launch(self, timeout=None): | 
|  | if timeout is None: timeout = 30 | 
|  | logfile = sys.stdout if self.TraceOn() else None | 
|  | self.child = pexpect.spawn('%s %s' % (lldbtest_config.lldbExec, self.launchArgs()), logfile=logfile) | 
|  | self.child.timeout = timeout | 
|  | self.timeout = timeout | 
|  |  | 
|  | def expect(self, patterns=None, timeout=None, exact=None): | 
|  | if patterns is None: return None | 
|  | if timeout is None: timeout = self.timeout | 
|  | if exact is None: exact = False | 
|  | if exact: | 
|  | return self.child.expect_exact(patterns, timeout=timeout) | 
|  | else: | 
|  | return self.child.expect(patterns, timeout=timeout) | 
|  |  | 
|  | def expectall(self, patterns=None, timeout=None, exact=None): | 
|  | if patterns is None: return None | 
|  | if timeout is None: timeout = self.timeout | 
|  | if exact is None: exact = False | 
|  | for pattern in patterns: | 
|  | self.expect(pattern, timeout=timeout, exact=exact) | 
|  |  | 
|  | def sendimpl(self, sender, command, patterns=None, timeout=None, exact=None): | 
|  | sender(command) | 
|  | return self.expect(patterns=patterns, timeout=timeout, exact=exact) | 
|  |  | 
|  | def send(self, command, patterns=None, timeout=None, exact=None): | 
|  | return self.sendimpl(self.child.send, command, patterns, timeout, exact) | 
|  |  | 
|  | def sendline(self, command, patterns=None, timeout=None, exact=None): | 
|  | return self.sendimpl(self.child.sendline, command, patterns, timeout, exact) | 
|  |  | 
|  | def quit(self, gracefully=None): | 
|  | if gracefully is None: gracefully = True | 
|  | self.child.sendeof() | 
|  | self.child.close(force=not gracefully) | 
|  | self.child = None |