teemperor created this revision.
teemperor added reviewers: labath, clayborg.
Herald added subscribers: lldb-commits, JDevlieghere.
Herald added a project: LLDB.
teemperor added a comment.

Given how much fun Pavel had fixing my previous pexpect tests, I thought: "Why 
stop the fun after just two tests?". So here we go!


This adds a basic test for the GUI command. Just tests that it starts up, that 
we can quit the gui
and help window, and that the basic UI elements are rendered. Mostly testing 
the waters how
testing this command will do on the bots or if that will cause some serious 
issues when we do
fancy ncurses stuff.


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D67018

Files:
  lldb/packages/Python/lldbsuite/test/functionalities/gui_command/Makefile
  
lldb/packages/Python/lldbsuite/test/functionalities/gui_command/TestGuiBasic.py
  lldb/packages/Python/lldbsuite/test/functionalities/gui_command/main.c


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;
+}
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/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/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;
+}
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/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
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to