| """ |
| Test that the lldb-mi driver exits properly. |
| """ |
| |
| import lldb_shared |
| |
| import lldbmi_testcase |
| from lldbtest import * |
| |
| class MiExitTestCase(lldbmi_testcase.MiTestCaseBase): |
| |
| mydir = TestBase.compute_mydir(__file__) |
| |
| @lldbmi_test |
| @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows") |
| @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races |
| def test_lldbmi_gdb_exit(self): |
| """Test that '-gdb-exit' terminates local debug session and exits.""" |
| |
| 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 -gdb-exit: try to exit and check that program is finished |
| self.runCmd("-gdb-exit") |
| self.expect("\^exit") |
| import pexpect |
| self.expect(pexpect.EOF) |
| |
| @lldbmi_test |
| @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows") |
| @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races |
| def test_lldbmi_quit(self): |
| """Test that 'quit' exits immediately.""" |
| |
| 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 quit: try to exit and check that program is finished |
| self.runCmd("quit") |
| import pexpect |
| self.expect(pexpect.EOF) |
| |
| @lldbmi_test |
| @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows") |
| @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races |
| def test_lldbmi_q(self): |
| """Test that 'q' exits immediately.""" |
| |
| 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 q: try to exit and check that program is finished |
| self.runCmd("q") |
| import pexpect |
| self.expect(pexpect.EOF) |