96 lines
2.7 KiB
Python
96 lines
2.7 KiB
Python
|
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
|