]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - packages/Python/lldbsuite/test/tools/lldb-mi/lldbmi_testcase.py
Vendor import of lldb trunk r256945:
[FreeBSD/FreeBSD.git] / packages / Python / lldbsuite / test / tools / lldb-mi / lldbmi_testcase.py
1 """
2 Base class for lldb-mi test cases.
3 """
4
5 from __future__ import print_function
6
7
8
9 from lldbsuite.test.lldbtest import *
10
11 class MiTestCaseBase(Base):
12
13     mydir = None
14     myexe = "a.out"
15     mylog = "child.log"
16
17     def getCategories(self):
18         return ['lldb-mi']
19
20     @classmethod
21     def classCleanup(cls):
22         TestBase.RemoveTempFile(cls.myexe)
23         TestBase.RemoveTempFile(cls.mylog)
24
25     def setUp(self):
26         Base.setUp(self)
27         self.buildDefault()
28         self.child_prompt = "(gdb)"
29
30     def tearDown(self):
31         if self.TraceOn():
32             print("\n\nContents of %s:" % self.mylog)
33             try:
34                 print(open(self.mylog, "r").read())
35             except IOError:
36                 pass
37         Base.tearDown(self)
38
39     def spawnLldbMi(self, args=None):
40         import pexpect
41         self.child = pexpect.spawn("%s --interpreter %s" % (
42             self.lldbMiExec, args if args else ""))
43         self.child.setecho(True)
44         self.child.logfile_read = open(self.mylog, "w")
45         # wait until lldb-mi has started up and is ready to go
46         self.expect(self.child_prompt, exactly = True)
47
48     def runCmd(self, cmd):
49         self.child.sendline(cmd)
50
51     def expect(self, pattern, exactly=False, *args, **kwargs):
52         if exactly:
53             return self.child.expect_exact(pattern, *args, **kwargs)
54         return self.child.expect(pattern, *args, **kwargs)