from __future__ import print_function from __future__ import absolute_import # System modules import os import sys # Third-party modules import six # LLDB Modules import lldb from .lldbtest import * from . import lldbutil if sys.platform.startswith('win32'): class PExpectTest(TestBase): pass else: 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 --no-use-colors %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