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 0000000000000..55b958a55972d --- /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 | 
