Skip to content

Commit 82cbd32

Browse files
Add a DAP_Event_Processed hook
This allows to wait for DAP events in the tests. For eng/ide/gnatstudio#281
1 parent c3b9a0e commit 82cbd32

File tree

5 files changed

+37
-3
lines changed

5 files changed

+37
-3
lines changed

dap/src/dap-clients-breakpoint_managers.adb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ package body DAP.Clients.Breakpoint_Managers is
4545
("DAP.CLIENTS.BREAKPOINT_MANAGER");
4646

4747
type On_DAP_Request_Processed
48-
is new GPS.Kernel.Hooks.Dap_Message_Hooks_Function with record
48+
is new GPS.Kernel.Hooks.Dap_Method_Hooks_Function with record
4949
Manager : Breakpoint_Manager_Access;
5050
end record;
5151
overriding procedure Execute

dap/src/dap-clients.adb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,6 +1390,10 @@ package body DAP.Clients is
13901390
if Self.Status /= Terminating then
13911391
Self.Process_Event (Reader, Event);
13921392
end if;
1393+
1394+
GPS.Kernel.Hooks.Dap_Event_Processed_Hook.Run
1395+
(Kernel => Self.Kernel,
1396+
Event => VSS.Strings.Conversions.To_UTF_8_String (Event));
13931397
end if;
13941398

13951399
exception

docs/users_guide/GPS/generated_hooks.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ def DAP_debugger_unloaded(name,id):
2222
2323
"""
2424

25+
# DAP_event_processed = 'DAP_event_processed'
26+
def DAP_event_processed(name,event):
27+
"""
28+
Emitted when an event received from the DAP server has been processed.
29+
30+
:param str name:
31+
:param str event:
32+
33+
"""
34+
2535
# DAP_response_processed = 'DAP_response_processed'
2636
def DAP_response_processed(name,method):
2737
"""

kernel/src/hooks.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -545,10 +545,14 @@ def __init__(self, name, type, descr=''):
545545
Param('contents', 'String'),
546546
Param('method', 'String')]),
547547

548-
'DAP_message_hooks': Hook_Type(
548+
'DAP_method_hooks': Hook_Type(
549549
[Param('name', '__hookname__'),
550550
Param('method', 'String')]),
551551

552+
'DAP_event_hooks': Hook_Type(
553+
[Param('name', '__hookname__'),
554+
Param('event', 'String')]),
555+
552556
'DAP_id_hooks': Hook_Type(
553557
[Param('name', '__hookname__'),
554558
Param('id', 'Integer')])
@@ -1119,10 +1123,15 @@ def on_file_changed(hook, file):
11191123
Emitted when the filter of a view has changed.'''),
11201124

11211125
Hook('DAP_response_processed',
1122-
'DAP_message_hooks',
1126+
'DAP_method_hooks',
11231127
descr='''
11241128
Emitted when a response from the DAP server has been processed.'''),
11251129

1130+
Hook('DAP_event_processed',
1131+
'DAP_event_hooks',
1132+
descr='''
1133+
Emitted when an event received from the DAP server has been processed.'''),
1134+
11261135
Hook('DAP_debugger_unloaded',
11271136
'DAP_id_hooks',
11281137
descr='''

share/support/core/gs_utils/internal/utils.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,17 @@ def wait_DAP_server(method=""):
251251
if m == method:
252252
break
253253

254+
@workflows.run_as_workflow
255+
def wait_DAP_event(event=""):
256+
"""
257+
Wait until the given DAP event has been processed by GNAT Studio.
258+
"""
259+
while True:
260+
(e) = yield hook("DAP_event_processed")
261+
262+
if e == event:
263+
break
264+
254265

255266
@workflows.run_as_workflow
256267
def wait_until_not_busy(debugger, t=100):

0 commit comments

Comments
 (0)