The don't currently work (and they're also not particularly useful, since all of the remote stuff happens inside lldb). This saves us from annotating tests one by one.
68 lines
2.7 KiB
Python
68 lines
2.7 KiB
Python
"""
|
|
Test lldb-dap setBreakpoints request
|
|
"""
|
|
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
import lldbdap_testcase
|
|
|
|
|
|
class TestDAP_threads(lldbdap_testcase.DAPTestCaseBase):
|
|
@skipIfWindows
|
|
def test_correct_thread(self):
|
|
"""
|
|
Tests that the correct thread is selected if we continue from
|
|
a thread that goes away and hit a breakpoint in another thread.
|
|
In this case, the selected thread should be the thread that
|
|
just hit the breakpoint, and not the first thread in the list.
|
|
"""
|
|
program = self.getBuildArtifact("a.out")
|
|
self.build_and_launch(program)
|
|
source = "main.c"
|
|
breakpoint_line = line_number(source, "// break here")
|
|
lines = [breakpoint_line]
|
|
# Set breakpoint in the thread function
|
|
breakpoint_ids = self.set_source_breakpoints(source, lines)
|
|
self.assertEqual(
|
|
len(breakpoint_ids), len(lines), "expect correct number of breakpoints"
|
|
)
|
|
self.continue_to_breakpoints(breakpoint_ids)
|
|
# We're now stopped at the breakpoint in the first thread, thread #2.
|
|
# Continue to join the first thread and hit the breakpoint in the
|
|
# second thread, thread #3.
|
|
self.dap_server.request_continue()
|
|
stopped_event = self.dap_server.wait_for_stopped()
|
|
# Verify that the description is the relevant breakpoint,
|
|
# preserveFocusHint is False and threadCausedFocus is True
|
|
self.assertTrue(
|
|
stopped_event[0]["body"]["description"].startswith(
|
|
"breakpoint %s." % breakpoint_ids[0]
|
|
)
|
|
)
|
|
self.assertFalse(stopped_event[0]["body"]["preserveFocusHint"])
|
|
self.assertTrue(stopped_event[0]["body"]["threadCausedFocus"])
|
|
|
|
@skipIfWindows
|
|
def test_thread_format(self):
|
|
"""
|
|
Tests the support for custom thread formats.
|
|
"""
|
|
program = self.getBuildArtifact("a.out")
|
|
self.build_and_launch(
|
|
program, customThreadFormat="This is thread index #${thread.index}"
|
|
)
|
|
source = "main.c"
|
|
breakpoint_line = line_number(source, "// break here")
|
|
lines = [breakpoint_line]
|
|
# Set breakpoint in the thread function
|
|
breakpoint_ids = self.set_source_breakpoints(source, lines)
|
|
self.assertEqual(
|
|
len(breakpoint_ids), len(lines), "expect correct number of breakpoints"
|
|
)
|
|
self.continue_to_breakpoints(breakpoint_ids)
|
|
# We are stopped at the second thread
|
|
threads = self.dap_server.get_threads()
|
|
self.assertEqual(threads[0]["name"], "This is thread index #1")
|
|
self.assertEqual(threads[1]["name"], "This is thread index #2")
|