Skip to content

Commit d219a71

Browse files
authored
[lldb][lldb-dap][tests] Make sure evaluate test exists with no errors. (#140788)
1 parent 57763b7 commit d219a71

File tree

2 files changed

+40
-25
lines changed

2 files changed

+40
-25
lines changed

lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def verify_breakpoint_hit(self, breakpoint_ids, timeout=DEFAULT_TIMEOUT):
116116
# location.
117117
description = body["description"]
118118
for breakpoint_id in breakpoint_ids:
119-
match_desc = "breakpoint %s." % (breakpoint_id)
119+
match_desc = f"breakpoint {breakpoint_id}."
120120
if match_desc in description:
121121
return
122122
self.assertTrue(False, f"breakpoint not hit, stopped_events={stopped_events}")
@@ -312,6 +312,9 @@ def continue_to_next_stop(self, timeout=DEFAULT_TIMEOUT):
312312
self.do_continue()
313313
return self.dap_server.wait_for_stopped(timeout)
314314

315+
def continue_to_breakpoint(self, breakpoint_id: str, timeout=DEFAULT_TIMEOUT):
316+
self.continue_to_breakpoints((breakpoint_id), timeout)
317+
315318
def continue_to_breakpoints(self, breakpoint_ids, timeout=DEFAULT_TIMEOUT):
316319
self.do_continue()
317320
self.verify_breakpoint_hit(breakpoint_ids, timeout)

lldb/test/API/tools/lldb-dap/evaluate/TestDAP_evaluate.py

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
import re
66

77
import lldbdap_testcase
8-
import dap_server
9-
from lldbsuite.test import lldbutil
10-
from lldbsuite.test.decorators import *
11-
from lldbsuite.test.lldbtest import *
8+
from lldbsuite.test.decorators import skipIfWindows
9+
from lldbsuite.test.lldbtest import line_number
1210

1311

1412
class TestDAP_evaluate(lldbdap_testcase.DAPTestCaseBase):
@@ -45,20 +43,32 @@ def run_test_evaluate_expressions(
4543
enableAutoVariableSummaries=enableAutoVariableSummaries,
4644
)
4745
source = "main.cpp"
48-
self.set_source_breakpoints(
49-
source,
50-
[
51-
line_number(source, "// breakpoint 1"),
52-
line_number(source, "// breakpoint 2"),
53-
line_number(source, "// breakpoint 3"),
54-
line_number(source, "// breakpoint 4"),
55-
line_number(source, "// breakpoint 5"),
56-
line_number(source, "// breakpoint 6"),
57-
line_number(source, "// breakpoint 7"),
58-
line_number(source, "// breakpoint 8"),
59-
],
46+
breakpoint_lines = [
47+
line_number(source, "// breakpoint 1"),
48+
line_number(source, "// breakpoint 2"),
49+
line_number(source, "// breakpoint 3"),
50+
line_number(source, "// breakpoint 4"),
51+
line_number(source, "// breakpoint 5"),
52+
line_number(source, "// breakpoint 6"),
53+
line_number(source, "// breakpoint 7"),
54+
line_number(source, "// breakpoint 8"),
55+
]
56+
breakpoint_ids = self.set_source_breakpoints(source, breakpoint_lines)
57+
58+
self.assertEqual(
59+
len(breakpoint_ids),
60+
len(breakpoint_lines),
61+
"Did not resolve all the breakpoints.",
6062
)
61-
self.continue_to_next_stop()
63+
breakpoint_1 = breakpoint_ids[0]
64+
breakpoint_2 = breakpoint_ids[1]
65+
breakpoint_3 = breakpoint_ids[2]
66+
breakpoint_4 = breakpoint_ids[3]
67+
breakpoint_5 = breakpoint_ids[4]
68+
breakpoint_6 = breakpoint_ids[5]
69+
breakpoint_7 = breakpoint_ids[6]
70+
breakpoint_8 = breakpoint_ids[7]
71+
self.continue_to_breakpoint(breakpoint_1)
6272

6373
# Expressions at breakpoint 1, which is in main
6474
self.assertEvaluate("var1", "20")
@@ -124,7 +134,7 @@ def run_test_evaluate_expressions(
124134
self.assertEvaluateFailure("foo_var")
125135

126136
# Expressions at breakpoint 2, which is an anonymous block
127-
self.continue_to_next_stop()
137+
self.continue_to_breakpoint(breakpoint_2)
128138
self.assertEvaluate("var1", "20")
129139
self.assertEvaluate("var2", "2") # different variable with the same name
130140
self.assertEvaluate("static_int", "42")
@@ -162,7 +172,7 @@ def run_test_evaluate_expressions(
162172
self.assertEvaluateFailure("foo_var")
163173

164174
# Expressions at breakpoint 3, which is inside a_function
165-
self.continue_to_next_stop()
175+
self.continue_to_breakpoint(breakpoint_3)
166176
self.assertEvaluate("list", "42")
167177
self.assertEvaluate("static_int", "42")
168178
self.assertEvaluate("non_static_int", "43")
@@ -188,28 +198,30 @@ def run_test_evaluate_expressions(
188198
self.assertEvaluateFailure("foo_var")
189199

190200
# Now we check that values are updated after stepping
191-
self.continue_to_next_stop()
201+
self.continue_to_breakpoint(breakpoint_4)
192202
self.assertEvaluate("my_vec", "size=2")
193-
self.continue_to_next_stop()
203+
self.continue_to_breakpoint(breakpoint_5)
194204
self.assertEvaluate("my_vec", "size=3")
195205

196206
self.assertEvaluate("my_map", "size=2")
197-
self.continue_to_next_stop()
207+
self.continue_to_breakpoint(breakpoint_6)
198208
self.assertEvaluate("my_map", "size=3")
199209

200210
self.assertEvaluate("my_bool_vec", "size=1")
201-
self.continue_to_next_stop()
211+
self.continue_to_breakpoint(breakpoint_7)
202212
self.assertEvaluate("my_bool_vec", "size=2")
203213

214+
self.continue_to_breakpoint(breakpoint_8)
204215
# Test memory read, especially with 'empty' repeat commands.
205216
if context == "repl":
206-
self.continue_to_next_stop()
207217
self.assertEvaluate("memory read -c 1 &my_ints", ".* 05 .*\n")
208218
self.assertEvaluate("", ".* 0a .*\n")
209219
self.assertEvaluate("", ".* 0f .*\n")
210220
self.assertEvaluate("", ".* 14 .*\n")
211221
self.assertEvaluate("", ".* 19 .*\n")
212222

223+
self.continue_to_exit()
224+
213225
@skipIfWindows
214226
def test_generic_evaluate_expressions(self):
215227
# Tests context-less expression evaluations

0 commit comments

Comments
 (0)