diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/lldbpexpect.py')
-rw-r--r-- | packages/Python/lldbsuite/test/lldbpexpect.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/lldbpexpect.py b/packages/Python/lldbsuite/test/lldbpexpect.py new file mode 100644 index 0000000..55b958a --- /dev/null +++ b/packages/Python/lldbsuite/test/lldbpexpect.py @@ -0,0 +1,63 @@ +from __future__ import print_function +from __future__ import absolute_import + +# System modules +import os +import sys + +# Third-party modules +import pexpect + +# LLDB Modules +import lldb +from .lldbtest import * +from . import lldbutil + +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 |