Index: lldb/packages/Python/lldbsuite/test/functionalities/gui_command/Makefile =================================================================== --- /dev/null +++ lldb/packages/Python/lldbsuite/test/functionalities/gui_command/Makefile @@ -0,0 +1,3 @@ +LEVEL = ../../make +C_SOURCES := main.c +include $(LEVEL)/Makefile.rules Index: lldb/packages/Python/lldbsuite/test/functionalities/gui_command/TestGuiBasic.py =================================================================== --- /dev/null +++ lldb/packages/Python/lldbsuite/test/functionalities/gui_command/TestGuiBasic.py @@ -0,0 +1,58 @@ +""" +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__) + + def test_gui(self): + self.build() + + self.launch(executable=self.getBuildArtifact("a.out")) + self.expect("b main.c:4", 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.quit() Index: lldb/packages/Python/lldbsuite/test/functionalities/gui_command/main.c =================================================================== --- /dev/null +++ lldb/packages/Python/lldbsuite/test/functionalities/gui_command/main.c @@ -0,0 +1,5 @@ +int main(int argc, char **argv) { + lldb_enable_attach(); + int funky_var_name_that_should_be_rendered = 22; + return 0; +}