blob: 64cec70aa923b20d45c25bf335d150797ca9738a [file] [log] [blame]
"""
Test lldb-dap send-event integration.
"""
import json
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
import lldbdap_testcase
class TestDAP_sendEvent(lldbdap_testcase.DAPTestCaseBase):
def test_send_event(self):
"""
Test sending a custom event.
"""
program = self.getBuildArtifact("a.out")
source = "main.c"
breakpoint_line = line_number(source, "// breakpoint")
custom_event_body = {
"key": 321,
"arr": [True],
}
self.build_and_launch(
program,
sourceBreakpoints=[(source, [breakpoint_line])],
stopCommands=[
"lldb-dap send-event my-custom-event-no-body",
"lldb-dap send-event my-custom-event '{}'".format(
json.dumps(custom_event_body)
),
],
)
custom_event = self.dap_server.wait_for_event(
filter=["my-custom-event-no-body"]
)
self.assertEqual(custom_event["event"], "my-custom-event-no-body")
self.assertIsNone(custom_event.get("body", None))
custom_event = self.dap_server.wait_for_event(filter=["my-custom-event"])
self.assertEqual(custom_event["event"], "my-custom-event")
self.assertEqual(custom_event["body"], custom_event_body)
def test_send_internal_event(self):
"""
Test sending an internal event produces an error.
"""
program = self.getBuildArtifact("a.out")
source = "main.c"
self.build_and_launch(program)
breakpoint_line = line_number(source, "// breakpoint")
self.set_source_breakpoints(source, [breakpoint_line])
self.continue_to_next_stop()
resp = self.dap_server.request_evaluate(
"`lldb-dap send-event stopped", context="repl"
)
self.assertRegex(
resp["body"]["result"],
r"Invalid use of lldb-dap send-event, event \"stopped\" should be handled by lldb-dap internally.",
)