[Lldb-commits] [lldb] r227875 - Add an helper class to write pexpect-based test cases

Zachary Turner zturner at google.com
Mon Feb 2 14:27:25 PST 2015


This will be very helpful for when we eventually come up with a solution
for pexpect on Windows.  Thanks

On Mon Feb 02 2015 at 2:19:55 PM Enrico Granata <egranata at apple.com> wrote:

> Author: enrico
> Date: Mon Feb  2 16:12:39 2015
> New Revision: 227875
>
> URL: http://llvm.org/viewvc/llvm-project?rev=227875&view=rev
> Log:
> Add an helper class to write pexpect-based test cases
> Over time, we should improve this class and port all pexpect based testing
> over to using this
>
>
> Added:
>     lldb/trunk/test/lldbpexpect.py
>
> Added: lldb/trunk/test/lldbpexpect.py
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/
> lldbpexpect.py?rev=227875&view=auto
> ============================================================
> ==================
> --- lldb/trunk/test/lldbpexpect.py (added)
> +++ lldb/trunk/test/lldbpexpect.py Mon Feb  2 16:12:39 2015
> @@ -0,0 +1,48 @@
> +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):
> +        # Call super's setUp().
> +        TestBase.setUp(self)
> +
> +    def doTest(self):
> +        # put your commands here
> +        pass
> +
> +    def launchArgs(self):
> +        return ""
> +
> +    def launch(self):
> +        self.timeout = 5
> +        self.child = pexpect.spawn('%s %s' % self.lldbHere,
> self.launchArgs())
> +
> +    def expect(self, patterns=None, timeout=None):
> +        if patterns is None: patterns = '.*'
> +        return self.child.expect(patterns, timeout=timeout)
> +
> +    def sendimpl(self, sender, command, patterns=None, timeout=None):
> +        if timeout is None: timeout = self.timeout
> +        sender(command)
> +        if patterns is not None: return self.expect(patterns=patterns,
> timeout=timeout)
> +        return None
> +
> +    def send(self, command, patterns=None, timeout=None):
> +        self.sendimpl(self.child.send, command, patterns, timeout)
> +
> +    def sendline(self, command, patterns=None, timeout=None):
> +        self.sendimpl(self.child.sendline, command, patterns, timeout)
> +
> +    def quit(self, gracefully=None):
> +        if gracefully is None: gracefully = True
> +        self.child.sendeof()
> +        self.child.close(force=not gracefully)
> +        self.child = None
>
>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20150202/0b370ed9/attachment.html>


More information about the lldb-commits mailing list