[Lldb-commits] [lldb] r228674 - Add tests for -interpreter-exec command (MI)
Ilia K
ki.stfu at gmail.com
Mon Feb 9 22:35:59 PST 2015
Author: ki.stfu
Date: Tue Feb 10 00:35:58 2015
New Revision: 228674
URL: http://llvm.org/viewvc/llvm-project?rev=228674&view=rev
Log:
Add tests for -interpreter-exec command (MI)
Added:
lldb/trunk/test/tools/lldb-mi/TestMiInterpreterExec.py
Added: lldb/trunk/test/tools/lldb-mi/TestMiInterpreterExec.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/tools/lldb-mi/TestMiInterpreterExec.py?rev=228674&view=auto
==============================================================================
--- lldb/trunk/test/tools/lldb-mi/TestMiInterpreterExec.py (added)
+++ lldb/trunk/test/tools/lldb-mi/TestMiInterpreterExec.py Tue Feb 10 00:35:58 2015
@@ -0,0 +1,173 @@
+"""
+Test that the lldb-mi driver works with -interpreter-exec command
+"""
+
+import lldbmi_testcase
+from lldbtest import *
+import unittest2
+
+class MiInterpreterExecTestCase(lldbmi_testcase.MiTestCaseBase):
+
+ @lldbmi_test
+ @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
+ @unittest2.skip("lldb-mi handles double quotes in passed app path incorrectly")
+ def test_lldbmi_target_create(self):
+ """Test that 'lldb-mi --interpreter' can create target by 'target create' command."""
+
+ self.spawnLldbMi(args = None)
+
+ # Test that "target create" loads executable
+ self.runCmd("-interpreter-exec console \"target create \\\"%s\\\"\"" % self.myexe)
+ self.expect("\^done")
+
+ # Test that executable was loaded properly
+ self.runCmd("-break-insert -f main")
+ self.expect("\^done,bkpt={number=\"1\"")
+ self.runCmd("-exec-run")
+ self.expect("\^running")
+ self.expect("\*stopped,reason=\"breakpoint-hit\"")
+
+ @lldbmi_test
+ @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
+ def test_lldbmi_breakpoint_set(self):
+ """Test that 'lldb-mi --interpreter' can set breakpoint by 'breakpoint set' command."""
+
+ self.spawnLldbMi(args = None)
+
+ # Load executable
+ self.runCmd("-file-exec-and-symbols %s" % self.myexe)
+ self.expect("\^done")
+
+ # Test that "breakpoint set" sets a breakpoint
+ self.runCmd("-interpreter-exec console \"breakpoint set --name main\"")
+ self.expect("\^done")
+
+ # Test that breakpoint was set properly
+ self.runCmd("-exec-run")
+ self.expect("\^running")
+ self.expect("\*stopped,reason=\"breakpoint-hit\"")
+
+ @lldbmi_test
+ @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
+ @unittest2.skip("reviews.llvm.org/D6965: requires this patch")
+ def test_lldbmi_settings_set_target_run_args(self):
+ """Test that 'lldb-mi --interpreter' can set target arguments by 'setting set target.run-args' command."""
+
+ self.spawnLldbMi(args = None)
+
+ # Load executable
+ self.runCmd("-file-exec-and-symbols %s" % self.myexe)
+ self.expect("\^done")
+
+ # Test that "settings set target.run-args" passes arguments to executable
+ #FIXME: "--arg1 \"2nd arg\" third_arg fourth=\"4th arg\"" causes an error
+ self.runCmd("-interpreter-exec console \"setting set target.run-args arg1\"")
+ self.expect("\^done")
+
+ # Run to BP_argctest
+ line = line_number('main.c', '//BP_argctest')
+ self.runCmd("-break-insert --file main.c:%d" % line)
+ self.expect("\^done")
+ self.runCmd("-exec-run")
+ self.expect("\^running")
+
+ # Test that arguments were passed properly
+ self.expect("~\"argc=2\\\\r\\\\n\"")
+
+ @lldbmi_test
+ @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
+ def test_lldbmi_process_launch(self):
+ """Test that 'lldb-mi --interpreter' can launch process by "process launch" command."""
+
+ self.spawnLldbMi(args = None)
+
+ # Load executable
+ self.runCmd("-file-exec-and-symbols %s" % self.myexe)
+ self.expect("\^done")
+
+ # Set breakpoint
+ self.runCmd("-break-insert -f main")
+ self.expect("\^done,bkpt={number=\"1\"")
+
+ # Test that "process launch" launches executable
+ self.runCmd("-interpreter-exec console \"process launch\"")
+ self.expect("\^done")
+
+ # Test that breakpoint hit
+ self.expect("\*stopped,reason=\"breakpoint-hit\"")
+
+ @lldbmi_test
+ @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
+ def test_lldbmi_thread_step_in(self):
+ """Test that 'lldb-mi --interpreter' can step in by "thread step-in" command."""
+
+ self.spawnLldbMi(args = None)
+
+ # Load executable
+ self.runCmd("-file-exec-and-symbols %s" % self.myexe)
+ self.expect("\^done")
+
+ # Run to main
+ self.runCmd("-break-insert -f main")
+ self.expect("\^done,bkpt={number=\"1\"")
+ self.runCmd("-exec-run")
+ self.expect("\^running")
+ self.expect("\*stopped,reason=\"breakpoint-hit\"")
+
+ # Test that "thread step-in" steps in
+ #FIXME: is this supposed to step into printf?
+ self.runCmd("-interpreter-exec console \"thread step-in\"")
+ self.expect("\^done")
+ self.expect("~\"argc=1\\\\r\\\\n\"")
+ self.expect("\*stopped,reason=\"end-stepping-range\"")
+
+ @lldbmi_test
+ @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
+ def test_lldbmi_thread_step_over(self):
+ """Test that 'lldb-mi --interpreter' can step over by "thread step-over" command."""
+
+ self.spawnLldbMi(args = None)
+
+ # Load executable
+ self.runCmd("-file-exec-and-symbols %s" % self.myexe)
+ self.expect("\^done")
+
+ # Run to main
+ self.runCmd("-break-insert -f main")
+ self.expect("\^done,bkpt={number=\"1\"")
+ self.runCmd("-exec-run")
+ self.expect("\^running")
+ self.expect("\*stopped,reason=\"breakpoint-hit\"")
+
+ # Test that "thread step-over" steps over
+ self.runCmd("-interpreter-exec console \"thread step-over\"")
+ self.expect("\^done")
+ self.expect("~\"argc=1\\\\r\\\\n\"")
+ self.expect("\*stopped,reason=\"end-stepping-range\"")
+
+ @lldbmi_test
+ @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
+ def test_lldbmi_thread_continue(self):
+ """Test that 'lldb-mi --interpreter' can continue execution by "thread continue" command."""
+
+ self.spawnLldbMi(args = None)
+
+ # Load executable
+ self.runCmd("-file-exec-and-symbols %s" % self.myexe)
+ self.expect("\^done")
+
+ # Run to main
+ self.runCmd("-break-insert -f main")
+ self.expect("\^done,bkpt={number=\"1\"")
+ self.runCmd("-exec-run")
+ self.expect("\^running")
+ self.expect("\*stopped,reason=\"breakpoint-hit\"")
+
+ # Test that "thread continue" continues execution
+ self.runCmd("-interpreter-exec console \"thread continue\"")
+ self.expect("\^done")
+ self.expect("~\"argc=1\\\\r\\\\n")
+ self.expect("\*stopped,reason=\"exited-normally\"")
+
+if __name__ == '__main__':
+ unittest2.main()
More information about the lldb-commits
mailing list