""" 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 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()