Skip to content

Commit e3715f9

Browse files
author
kendal
committed
Fix flake in TestZerothFrame.py
This test is relying on the order of `process.threads` which is nondeterministic. By selecting the thread based on whether it is stopped at our breakpoint we can reliably select the correct one.
1 parent 0c56fd0 commit e3715f9

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

lldb/test/API/functionalities/unwind/zeroth_frame/TestZerothFrame.py

+11-12
Original file line numberDiff line numberDiff line change
@@ -40,28 +40,28 @@ def test(self):
4040
target = self.dbg.CreateTarget(exe)
4141
self.assertTrue(target, VALID_TARGET)
4242

43-
bp1_line = line_number("main.c", "// Set breakpoint 1 here")
44-
bp2_line = line_number("main.c", "// Set breakpoint 2 here")
45-
46-
lldbutil.run_break_set_by_file_and_line(
47-
self, "main.c", bp1_line, num_expected_locations=1
43+
main_dot_c = lldb.SBFileSpec("main.c")
44+
bp1 = target.BreakpointCreateBySourceRegex(
45+
"// Set breakpoint 1 here", main_dot_c
4846
)
49-
lldbutil.run_break_set_by_file_and_line(
50-
self, "main.c", bp2_line, num_expected_locations=1
47+
bp2 = target.BreakpointCreateBySourceRegex(
48+
"// Set breakpoint 2 here", main_dot_c
5149
)
5250

5351
process = target.LaunchSimple(None, None, self.get_process_working_directory())
5452
self.assertTrue(process, VALID_PROCESS)
5553

56-
thread = process.GetThreadAtIndex(0)
54+
thread = self.thread()
55+
5756
if self.TraceOn():
5857
print("Backtrace at the first breakpoint:")
5958
for f in thread.frames:
6059
print(f)
60+
6161
# Check that we have stopped at correct breakpoint.
6262
self.assertEqual(
63-
process.GetThreadAtIndex(0).frame[0].GetLineEntry().GetLine(),
64-
bp1_line,
63+
thread.frame[0].GetLineEntry().GetLine(),
64+
bp1.GetLocationAtIndex(0).GetAddress().GetLineEntry().GetLine(),
6565
"LLDB reported incorrect line number.",
6666
)
6767

@@ -70,15 +70,14 @@ def test(self):
7070
# 'continue' command.
7171
process.Continue()
7272

73-
thread = process.GetThreadAtIndex(0)
7473
if self.TraceOn():
7574
print("Backtrace at the second breakpoint:")
7675
for f in thread.frames:
7776
print(f)
7877
# Check that we have stopped at the breakpoint
7978
self.assertEqual(
8079
thread.frame[0].GetLineEntry().GetLine(),
81-
bp2_line,
80+
bp2.GetLocationAtIndex(0).GetAddress().GetLineEntry().GetLine(),
8281
"LLDB reported incorrect line number.",
8382
)
8483
# Double-check with GetPCAddress()

0 commit comments

Comments
 (0)