https://github.com/JDevlieghere updated 
https://github.com/llvm/llvm-project/pull/139021

>From fcd590a31f7b490f5fbc5996d9c5f2836ff4e7ee Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere <jo...@devlieghere.com>
Date: Wed, 7 May 2025 21:20:47 -0700
Subject: [PATCH 1/2] [lldb] Change the statusline format to print "no target"

Change the default statusline format to print "no target" when lldb is
launched without a target. Currently, the statusline is empty, which
looks rather odd.
---
 lldb/source/Core/CoreProperties.td            |  2 +-
 .../statusline/TestStatusline.py              | 62 ++++++++++---------
 2 files changed, 35 insertions(+), 29 deletions(-)

diff --git a/lldb/source/Core/CoreProperties.td 
b/lldb/source/Core/CoreProperties.td
index 2498841b47d9f..78988ce5b732f 100644
--- a/lldb/source/Core/CoreProperties.td
+++ b/lldb/source/Core/CoreProperties.td
@@ -186,7 +186,7 @@ let Definition = "debugger" in {
       : Property<"statusline-format", "FormatEntity">,
         Global,
         DefaultStringValue<
-            "${ansi.negative}{${target.file.basename}}{ "
+            "${ansi.negative}{${target.file.basename}|no target}{ "
             "${separator}${line.file.basename}:${line.number}:${line.column}}{ 
"
             "${separator}${thread.stop-reason}}{ "
             "${separator}{${progress.count} }${progress.message}}">,
diff --git a/lldb/test/API/functionalities/statusline/TestStatusline.py 
b/lldb/test/API/functionalities/statusline/TestStatusline.py
index da6b4e7c8f320..f00413e878d26 100644
--- a/lldb/test/API/functionalities/statusline/TestStatusline.py
+++ b/lldb/test/API/functionalities/statusline/TestStatusline.py
@@ -6,7 +6,18 @@
 from lldbsuite.test.lldbpexpect import PExpectTest
 
 
+# PExpect uses many timeouts internally and doesn't play well
+# under ASAN on a loaded machine..
+@skipIfAsan
 class TestStatusline(PExpectTest):
+
+    # Change this value to something smaller to make debugging this test less
+    # tedious.
+    TIMEOUT = 60
+
+    TERMINAL_HEIGHT = 10
+    TERMINAL_WIDTH = 60
+
     def do_setup(self):
         # Create a target and run to a breakpoint.
         exe = self.getBuildArtifact("a.out")
@@ -15,36 +26,34 @@ def do_setup(self):
         )
         self.expect('breakpoint set -p "Break here"', substrs=["Breakpoint 1"])
         self.expect("run", substrs=["stop reason"])
+        self.resize()
+
+    def resize(self):
+        # Change the terminal dimensions. When we launch the tests, we reset
+        # all the settings, leaving the terminal dimensions unset.
+        self.child.setwinsize(self.TERMINAL_HEIGHT, self.TERMINAL_WIDTH)
 
-    # PExpect uses many timeouts internally and doesn't play well
-    # under ASAN on a loaded machine..
-    @skipIfAsan
     def test(self):
         """Basic test for the statusline."""
         self.build()
-        self.launch()
+        self.launch(timeout=self.TIMEOUT)
         self.do_setup()
 
-        # Change the terminal dimensions.
-        terminal_height = 10
-        terminal_width = 60
-        self.child.setwinsize(terminal_height, terminal_width)
-
         # Enable the statusline and check for the control character and that we
         # can see the target, the location and the stop reason.
         self.expect('set set separator "| "')
         self.expect(
             "set set show-statusline true",
             [
-                "\x1b[0;{}r".format(terminal_height - 1),
+                "\x1b[0;{}r".format(self.TERMINAL_HEIGHT - 1),
                 "a.out | main.c:2:11 | breakpoint 1.1                        ",
             ],
         )
 
         # Change the terminal dimensions and make sure it's reflected 
immediately.
-        self.child.setwinsize(terminal_height, 25)
+        self.child.setwinsize(self.TERMINAL_HEIGHT, 25)
         self.child.expect(re.escape("a.out | main.c:2:11 | bre"))
-        self.child.setwinsize(terminal_height, terminal_width)
+        self.child.setwinsize(self.TERMINAL_HEIGHT, self.TERMINAL_WIDTH)
 
         # Change the separator.
         self.expect('set set separator "S "', ["a.out S main.c:2:11"])
@@ -58,23 +67,15 @@ def test(self):
 
         # Hide the statusline and check or the control character.
         self.expect(
-            "set set show-statusline false", 
["\x1b[0;{}r".format(terminal_height)]
+            "set set show-statusline false", 
["\x1b[0;{}r".format(self.TERMINAL_HEIGHT)]
         )
 
-    # PExpect uses many timeouts internally and doesn't play well
-    # under ASAN on a loaded machine..
-    @skipIfAsan
     def test_no_color(self):
         """Basic test for the statusline with colors disabled."""
         self.build()
-        self.launch(use_colors=False)
+        self.launch(use_colors=False, timeout=self.TIMEOUT)
         self.do_setup()
 
-        # Change the terminal dimensions.
-        terminal_height = 10
-        terminal_width = 60
-        self.child.setwinsize(terminal_height, terminal_width)
-
         # Enable the statusline and check for the "reverse video" control 
character.
         self.expect(
             "set set show-statusline true",
@@ -87,15 +88,20 @@ def test_deadlock(self):
         """Regression test for lock inversion between the statusline mutex and
         the output mutex."""
         self.build()
-        self.launch(extra_args=["-o", "settings set use-color false"])
+        self.launch(
+            extra_args=["-o", "settings set use-color false"], 
timeout=self.TIMEOUT
+        )
         self.child.expect("(lldb)")
-
-        # Change the terminal dimensions.
-        terminal_height = 10
-        terminal_width = 60
-        self.child.setwinsize(terminal_height, terminal_width)
+        self.resize()
 
         exe = self.getBuildArtifact("a.out")
 
         self.expect("file {}".format(exe), ["Current executable"])
         self.expect("help", ["Debugger commands"])
+
+    def test_no_target(self):
+        """Test that we print "no target" when launched without a target."""
+        self.launch(timeout=self.TIMEOUT)
+        self.resize()
+
+        self.expect("set set show-statusline true", ["no target"])

>From 547b9a3e41be42cf101614787c95c1137705ec2c Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere <jo...@devlieghere.com>
Date: Wed, 7 May 2025 22:24:36 -0700
Subject: [PATCH 2/2] Formatting

---
 lldb/test/API/functionalities/statusline/TestStatusline.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/lldb/test/API/functionalities/statusline/TestStatusline.py 
b/lldb/test/API/functionalities/statusline/TestStatusline.py
index f00413e878d26..53ac7432f4ba1 100644
--- a/lldb/test/API/functionalities/statusline/TestStatusline.py
+++ b/lldb/test/API/functionalities/statusline/TestStatusline.py
@@ -10,7 +10,6 @@
 # under ASAN on a loaded machine..
 @skipIfAsan
 class TestStatusline(PExpectTest):
-
     # Change this value to something smaller to make debugging this test less
     # tedious.
     TIMEOUT = 60

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to