[Lldb-commits] [PATCH] D85107: Add a test for 'b' (toggle breakpoint)

Luboš Luňák via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Sun Aug 2 23:39:52 PDT 2020


llunak created this revision.
llunak added a reviewer: clayborg.
llunak requested review of this revision.

The test needs the python curses module, to get the proper escape sequence to send the down key event.
I'm not sure if it's ok to just use the module, or if some check for it should be added too.


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D85107

Files:
  lldb/test/API/commands/gui/breakpoints/Makefile
  lldb/test/API/commands/gui/breakpoints/TestGuiBreakpoints.py
  lldb/test/API/commands/gui/breakpoints/main.c


Index: lldb/test/API/commands/gui/breakpoints/main.c
===================================================================
--- /dev/null
+++ lldb/test/API/commands/gui/breakpoints/main.c
@@ -0,0 +1,6 @@
+int main(int argc, char **argv) {
+  int var1 = 1; // First break here
+  int var2 = 2;
+  int var3 = 3;
+  return var1 + var2 + var3;
+}
Index: lldb/test/API/commands/gui/breakpoints/TestGuiBreakpoints.py
===================================================================
--- /dev/null
+++ lldb/test/API/commands/gui/breakpoints/TestGuiBreakpoints.py
@@ -0,0 +1,77 @@
+"""
+Test the 'gui' shortcut 'b' (toggle breakpoint).
+"""
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.lldbpexpect import PExpectTest
+from curses import *
+
+class TestGuiBasicDebugCommandTest(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 -o true -f main.c -p "// First break here"', substrs=["Breakpoint 1", "address ="])
+        self.expect("run", substrs=["stop reason ="])
+
+        self.child.sendline("breakpoint list")
+        self.child.expect_exact("No breakpoints currently set.")
+
+        escape_key = chr(27).encode()
+        setupterm() # curses
+        down_key = tigetstr("kcud1")
+
+        # Start the GUI and close the welcome window.
+        self.child.sendline("gui")
+        self.child.send(escape_key)
+        self.child.expect_exact("Sources") # wait for gui
+
+        # Go to next line, set a breakpoint.
+        self.child.send(down_key)
+        self.child.send('b')
+        self.child.send(escape_key)
+        self.expect_prompt()
+        self.child.sendline("breakpoint list")
+        self.child.expect("2: file = '[^']*main.c', line = 3,.*")
+        self.child.sendline("gui")
+        self.child.expect_exact("Sources")
+
+        # Go two lines down ("gui" resets position), set a breakpoint.
+        self.child.send(down_key)
+        self.child.send(down_key)
+        self.child.send('b')
+        self.child.send(escape_key)
+        self.expect_prompt()
+        self.child.sendline("breakpoint list")
+        self.child.expect("2: file = '[^']*main.c', line = 3,")
+        self.child.expect("3: file = '[^']*main.c', line = 4,")
+        self.child.sendline("gui")
+        self.child.expect_exact("Sources")
+
+        # Toggle both the breakpoints (remove them).
+        self.child.send(down_key)
+        self.child.send('b')
+        self.child.send(down_key)
+        self.child.send('b')
+        self.child.send(escape_key)
+        self.expect_prompt()
+        self.child.sendline("breakpoint list")
+        self.child.expect_exact("No breakpoints currently set.")
+        self.child.sendline("gui")
+        self.child.expect_exact("Sources")
+
+        # Press escape to quit the gui
+        self.child.send(escape_key)
+
+        self.expect_prompt()
+        self.quit()
Index: lldb/test/API/commands/gui/breakpoints/Makefile
===================================================================
--- /dev/null
+++ lldb/test/API/commands/gui/breakpoints/Makefile
@@ -0,0 +1,2 @@
+C_SOURCES := main.c
+include Makefile.rules


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D85107.282506.patch
Type: text/x-patch
Size: 3556 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200803/57badcb6/attachment.bin>


More information about the lldb-commits mailing list