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