From 7209d84f1cde8f58a49bb981448f669703195c44 Mon Sep 17 00:00:00 2001 From: Johnny Chen Date: Fri, 6 May 2011 23:26:12 +0000 Subject: [PATCH] Add an API test script file for SBCommandInterpreter. llvm-svn: 131035 --- lldb/test/lldbtest.py | 2 + lldb/test/python_api/interpreter/Makefile | 5 ++ .../interpreter/TestCommandInterpreterAPI.py | 80 +++++++++++++++++++ lldb/test/python_api/interpreter/main.c | 6 ++ 4 files changed, 93 insertions(+) create mode 100644 lldb/test/python_api/interpreter/Makefile create mode 100644 lldb/test/python_api/interpreter/TestCommandInterpreterAPI.py create mode 100644 lldb/test/python_api/interpreter/main.c diff --git a/lldb/test/lldbtest.py b/lldb/test/lldbtest.py index cf5e45ed2d27..772b6271341a 100644 --- a/lldb/test/lldbtest.py +++ b/lldb/test/lldbtest.py @@ -180,6 +180,8 @@ VALID_BREAKPOINT = "Got a valid breakpoint" VALID_BREAKPOINT_LOCATION = "Got a valid breakpoint location" +VALID_COMMAND_INTERPRETER = "Got a valid command interpreter" + VALID_FILESPEC = "Got a valid filespec" VALID_MODULE = "Got a valid module" diff --git a/lldb/test/python_api/interpreter/Makefile b/lldb/test/python_api/interpreter/Makefile new file mode 100644 index 000000000000..0d70f2595019 --- /dev/null +++ b/lldb/test/python_api/interpreter/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../../make + +C_SOURCES := main.c + +include $(LEVEL)/Makefile.rules diff --git a/lldb/test/python_api/interpreter/TestCommandInterpreterAPI.py b/lldb/test/python_api/interpreter/TestCommandInterpreterAPI.py new file mode 100644 index 000000000000..c448181f9885 --- /dev/null +++ b/lldb/test/python_api/interpreter/TestCommandInterpreterAPI.py @@ -0,0 +1,80 @@ +"""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.IsValid(), VALID_TARGET) + + # Retrieve the associated command interpreter from our debugger. + ci = self.dbg.GetCommandInterpreter() + self.assertTrue(ci.IsValid(), 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.IsValid()) + + 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() diff --git a/lldb/test/python_api/interpreter/main.c b/lldb/test/python_api/interpreter/main.c new file mode 100644 index 000000000000..277aa54a4eea --- /dev/null +++ b/lldb/test/python_api/interpreter/main.c @@ -0,0 +1,6 @@ +#include + +int main(int argc, char const *argv[]) { + printf("Hello world.\n"); + return 0; +}