Skip to content

Commit 45cd708

Browse files
authored
[lldb] Change the statusline format to print "no target" (llvm#139021)
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.
1 parent 5c6cbe2 commit 45cd708

File tree

2 files changed

+34
-29
lines changed

2 files changed

+34
-29
lines changed

‎lldb/source/Core/CoreProperties.td

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ let Definition = "debugger" in {
186186
: Property<"statusline-format", "FormatEntity">,
187187
Global,
188188
DefaultStringValue<
189-
"${ansi.negative}{${target.file.basename}}{ "
189+
"${ansi.negative}{${target.file.basename}|no target}{ "
190190
"${separator}${line.file.basename}:${line.number}:${line.column}}{ "
191191
"${separator}${thread.stop-reason}}{ "
192192
"${separator}{${progress.count} }${progress.message}}">,

‎lldb/test/API/functionalities/statusline/TestStatusline.py

+33-28
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,17 @@
66
from lldbsuite.test.lldbpexpect import PExpectTest
77

88

9+
# PExpect uses many timeouts internally and doesn't play well
10+
# under ASAN on a loaded machine..
11+
@skipIfAsan
912
class TestStatusline(PExpectTest):
13+
# Change this value to something smaller to make debugging this test less
14+
# tedious.
15+
TIMEOUT = 60
16+
17+
TERMINAL_HEIGHT = 10
18+
TERMINAL_WIDTH = 60
19+
1020
def do_setup(self):
1121
# Create a target and run to a breakpoint.
1222
exe = self.getBuildArtifact("a.out")
@@ -15,36 +25,34 @@ def do_setup(self):
1525
)
1626
self.expect('breakpoint set -p "Break here"', substrs=["Breakpoint 1"])
1727
self.expect("run", substrs=["stop reason"])
28+
self.resize()
29+
30+
def resize(self):
31+
# Change the terminal dimensions. When we launch the tests, we reset
32+
# all the settings, leaving the terminal dimensions unset.
33+
self.child.setwinsize(self.TERMINAL_HEIGHT, self.TERMINAL_WIDTH)
1834

19-
# PExpect uses many timeouts internally and doesn't play well
20-
# under ASAN on a loaded machine..
21-
@skipIfAsan
2235
def test(self):
2336
"""Basic test for the statusline."""
2437
self.build()
25-
self.launch()
38+
self.launch(timeout=self.TIMEOUT)
2639
self.do_setup()
2740

28-
# Change the terminal dimensions.
29-
terminal_height = 10
30-
terminal_width = 60
31-
self.child.setwinsize(terminal_height, terminal_width)
32-
3341
# Enable the statusline and check for the control character and that we
3442
# can see the target, the location and the stop reason.
3543
self.expect('set set separator "| "')
3644
self.expect(
3745
"set set show-statusline true",
3846
[
39-
"\x1b[0;{}r".format(terminal_height - 1),
47+
"\x1b[0;{}r".format(self.TERMINAL_HEIGHT - 1),
4048
"a.out | main.c:2:11 | breakpoint 1.1 ",
4149
],
4250
)
4351

4452
# Change the terminal dimensions and make sure it's reflected immediately.
45-
self.child.setwinsize(terminal_height, 25)
53+
self.child.setwinsize(self.TERMINAL_HEIGHT, 25)
4654
self.child.expect(re.escape("a.out | main.c:2:11 | bre"))
47-
self.child.setwinsize(terminal_height, terminal_width)
55+
self.child.setwinsize(self.TERMINAL_HEIGHT, self.TERMINAL_WIDTH)
4856

4957
# Change the separator.
5058
self.expect('set set separator "S "', ["a.out S main.c:2:11"])
@@ -58,23 +66,15 @@ def test(self):
5866

5967
# Hide the statusline and check or the control character.
6068
self.expect(
61-
"set set show-statusline false", ["\x1b[0;{}r".format(terminal_height)]
69+
"set set show-statusline false", ["\x1b[0;{}r".format(self.TERMINAL_HEIGHT)]
6270
)
6371

64-
# PExpect uses many timeouts internally and doesn't play well
65-
# under ASAN on a loaded machine..
66-
@skipIfAsan
6772
def test_no_color(self):
6873
"""Basic test for the statusline with colors disabled."""
6974
self.build()
70-
self.launch(use_colors=False)
75+
self.launch(use_colors=False, timeout=self.TIMEOUT)
7176
self.do_setup()
7277

73-
# Change the terminal dimensions.
74-
terminal_height = 10
75-
terminal_width = 60
76-
self.child.setwinsize(terminal_height, terminal_width)
77-
7878
# Enable the statusline and check for the "reverse video" control character.
7979
self.expect(
8080
"set set show-statusline true",
@@ -87,15 +87,20 @@ def test_deadlock(self):
8787
"""Regression test for lock inversion between the statusline mutex and
8888
the output mutex."""
8989
self.build()
90-
self.launch(extra_args=["-o", "settings set use-color false"])
90+
self.launch(
91+
extra_args=["-o", "settings set use-color false"], timeout=self.TIMEOUT
92+
)
9193
self.child.expect("(lldb)")
92-
93-
# Change the terminal dimensions.
94-
terminal_height = 10
95-
terminal_width = 60
96-
self.child.setwinsize(terminal_height, terminal_width)
94+
self.resize()
9795

9896
exe = self.getBuildArtifact("a.out")
9997

10098
self.expect("file {}".format(exe), ["Current executable"])
10199
self.expect("help", ["Debugger commands"])
100+
101+
def test_no_target(self):
102+
"""Test that we print "no target" when launched without a target."""
103+
self.launch(timeout=self.TIMEOUT)
104+
self.resize()
105+
106+
self.expect("set set show-statusline true", ["no target"])

0 commit comments

Comments
 (0)