blob: 7b6ee55b250e18875c3143d857d8ae34a6b9fc6f [file] [log] [blame]
"""
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)