| """ |
| Test that the 'gui' displays the help window and basic UI. |
| """ |
| |
| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test.lldbpexpect import PExpectTest |
| |
| class BasicGuiCommandTest(PExpectTest): |
| |
| mydir = TestBase.compute_mydir(__file__) |
| |
| # PExpect uses many timeouts internally and doesn't play well |
| # under ASAN on a loaded machine.. |
| @skipIfAsan |
| @skipIfCursesSupportMissing |
| @skipIfRemote # "run" command will not work correctly for remote debug |
| def test_gui(self): |
| self.build() |
| |
| self.launch(executable=self.getBuildArtifact("a.out"), dimensions=(100,500)) |
| self.expect('br set -f main.c -p "// Break here"', substrs=["Breakpoint 1", "address ="]) |
| self.expect("run", substrs=["stop reason ="]) |
| |
| |
| escape_key = chr(27).encode() |
| |
| # Start the GUI for the first time and check for the welcome window. |
| self.child.sendline("gui") |
| self.child.expect_exact("Welcome to the LLDB curses GUI.") |
| |
| # Press escape to quit the welcome screen |
| self.child.send(escape_key) |
| # Press escape again to quit the gui |
| self.child.send(escape_key) |
| self.expect_prompt() |
| |
| # Start the GUI a second time, this time we should have the normal GUI. |
| self.child.sendline("gui") |
| # Check for GUI elements in the menu bar. |
| self.child.expect_exact("Target") |
| self.child.expect_exact("Process") |
| self.child.expect_exact("Thread") |
| self.child.expect_exact("View") |
| self.child.expect_exact("Help") |
| |
| # Check the sources window. |
| self.child.expect_exact("Sources") |
| self.child.expect_exact("main") |
| self.child.expect_exact("funky_var_name_that_should_be_rendered") |
| |
| # Check the variable window. |
| self.child.expect_exact("Variables") |
| self.child.expect_exact("(int) funky_var_name_that_should_be_rendered = 22") |
| |
| # Check the bar at the bottom. |
| self.child.expect_exact("Frame:") |
| |
| # Press escape to quit the gui |
| self.child.send(escape_key) |
| |
| self.expect_prompt() |
| self.quit() |