From 78b7d5fab22e2be356b80c6b01a2cc498fb9123c Mon Sep 17 00:00:00 2001 From: Enrico Granata Date: Mon, 2 Feb 2015 22:12:39 +0000 Subject: [PATCH] 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 llvm-svn: 227875 --- lldb/test/lldbpexpect.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 lldb/test/lldbpexpect.py diff --git a/lldb/test/lldbpexpect.py b/lldb/test/lldbpexpect.py new file mode 100644 index 0000000..9a347d5 --- /dev/null +++ b/lldb/test/lldbpexpect.py @@ -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 -- 2.7.4