| """ |
| Base class for lldb-mi test cases. |
| """ |
| |
| from __future__ import print_function |
| |
| |
| from lldbsuite.test.lldbtest import * |
| |
| |
| class MiTestCaseBase(Base): |
| |
| mydir = None |
| myexe = None |
| mylog = None |
| NO_DEBUG_INFO_TESTCASE = True |
| |
| @classmethod |
| def classCleanup(cls): |
| if cls.myexe: |
| TestBase.RemoveTempFile(cls.myexe) |
| if cls.mylog: |
| TestBase.RemoveTempFile(cls.mylog) |
| |
| def setUp(self): |
| if not self.mydir: |
| raise("mydir is empty") |
| |
| Base.setUp(self) |
| self.buildDefault() |
| self.child_prompt = "(gdb)" |
| self.myexe = self.getBuildArtifact("a.out") |
| |
| def tearDown(self): |
| if self.TraceOn(): |
| print("\n\nContents of %s:" % self.mylog) |
| try: |
| print(open(self.mylog, "r").read()) |
| except IOError: |
| pass |
| Base.tearDown(self) |
| |
| def spawnLldbMi(self, args=None): |
| import pexpect |
| self.child = pexpect.spawn("%s --interpreter %s" % ( |
| self.lldbMiExec, args if args else ""), cwd=self.getBuildDir()) |
| self.child.setecho(True) |
| self.mylog = self.getBuildArtifact("child.log") |
| self.child.logfile_read = open(self.mylog, "w") |
| # wait until lldb-mi has started up and is ready to go |
| self.expect(self.child_prompt, exactly=True) |
| |
| def runCmd(self, cmd): |
| self.child.sendline(cmd) |
| |
| def expect(self, pattern, exactly=False, *args, **kwargs): |
| if exactly: |
| return self.child.expect_exact(pattern, *args, **kwargs) |
| return self.child.expect(pattern, *args, **kwargs) |