Files
clang-p2996/lldb/test/python_api/interpreter/TestCommandInterpreterAPI.py
Johnny Chen 4ebd019b97 Now that we have added a post-processing step for adding truth value testing to
those lldb objects which implement the IsValid() method, let's change the rest of
the test suite to use the more compact truth value testing pattern (the Python way).

llvm-svn: 131970
2011-05-24 18:22:45 +00:00

81 lines
2.7 KiB
Python

"""Test the SBCommandInterpreter APIs."""
import os
import unittest2
import lldb
import pexpect
from lldbtest import *
class CommandInterpreterAPICase(TestBase):
mydir = os.path.join("python_api", "interpreter")
@unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
@python_api_test
def test_with_dsym_and_run_command(self):
"""Test the SBCommandInterpreter APIs."""
self.buildDsym()
self.command_interpreter_api()
@python_api_test
def test_with_dwarf_and_process_launch_api(self):
"""Test the SBCommandInterpreter APIs."""
self.buildDwarf()
self.command_interpreter_api()
def setUp(self):
# Call super's setUp().
TestBase.setUp(self)
# Find the line number to break on inside main.cpp.
self.line = line_number('main.c', 'Hello world.')
def command_interpreter_api(self):
"""Test the SBCommandInterpreter APIs."""
exe = os.path.join(os.getcwd(), "a.out")
# Create a target by the debugger.
target = self.dbg.CreateTarget(exe)
self.assertTrue(target, VALID_TARGET)
# Retrieve the associated command interpreter from our debugger.
ci = self.dbg.GetCommandInterpreter()
self.assertTrue(ci, VALID_COMMAND_INTERPRETER)
# Exercise some APIs....
self.assertTrue(ci.HasCommands())
self.assertTrue(ci.HasAliases())
self.assertTrue(ci.HasAliasOptions())
self.assertTrue(ci.CommandExists("breakpoint"))
self.assertTrue(ci.CommandExists("target"))
self.assertTrue(ci.CommandExists("platform"))
self.assertTrue(ci.AliasExists("file"))
self.assertTrue(ci.AliasExists("run"))
self.assertTrue(ci.AliasExists("bt"))
res = lldb.SBCommandReturnObject()
ci.HandleCommand("breakpoint set -f main.c -l %d" % self.line, res)
self.assertTrue(res.Succeeded())
ci.HandleCommand("process launch", res)
self.assertTrue(res.Succeeded())
# Assigning to self.process so it gets cleaned up during test tear down.
self.process = ci.GetProcess()
self.assertTrue(self.process)
import lldbutil
if self.process.GetState() != lldb.eStateStopped:
self.fail("Process should be in the 'stopped' state, "
"instead the actual state is: '%s'" %
lldbutil.state_type_to_str(self.process.GetState()))
if self.TraceOn():
lldbutil.print_stacktraces(self.process)
if __name__ == '__main__':
import atexit
lldb.SBDebugger.Initialize()
atexit.register(lambda: lldb.SBDebugger.Terminate())
unittest2.main()