@@ -50,6 +50,57 @@ def run_protocol_scenario program, dap: true, cdp: true, &scenario
5050 end
5151 end
5252
53+ def attach_to_dap_server
54+ @sock = Socket . unix @remote_info . sock_path
55+ @seq = 1
56+ @reader_thread = Thread . new do
57+ while res = recv_response
58+ @queue . push res
59+ end
60+ rescue Detach
61+ end
62+ sleep 0.001 while @reader_thread . status != 'sleep'
63+ @reader_thread . run
64+ INITIALIZE_DAP_MSGS . each { |msg | send ( **msg ) }
65+ end
66+
67+ def attach_to_cdp_server
68+ body = get_request HOST , @remote_info . port , '/json'
69+ Timeout . timeout ( TIMEOUT_SEC ) do
70+ sleep 0.001 until @remote_info . debuggee_backlog . join . include? 'Disconnected.'
71+ end
72+
73+ sock = Socket . tcp HOST , @remote_info . port
74+ uuid = body [ 0 ] [ :id ]
75+
76+ Timeout . timeout ( TIMEOUT_SEC ) do
77+ sleep 0.001 until @remote_info . debuggee_backlog . join . match? ( /Disconnected\. \R .*Connected/ )
78+ end
79+
80+ @web_sock = WebSocketClient . new sock
81+ @web_sock . handshake @remote_info . port , uuid
82+ @id = 1
83+ @reader_thread = Thread . new do
84+ while res = @web_sock . extract_data
85+ @queue . push res
86+ end
87+ rescue Detach
88+ end
89+ sleep 0.001 while @reader_thread . status != 'sleep'
90+ @reader_thread . run
91+ INITIALIZE_CDP_MSGS . each { |msg | send ( **msg ) }
92+ end
93+
94+ def req_dap_disconnect ( terminate_debuggee :)
95+ send_dap_request 'disconnect' , restart : false , terminateDebuggee : terminate_debuggee
96+ close_reader
97+ end
98+
99+ def req_cdp_disconnect
100+ @web_sock . send_close_connection
101+ close_reader
102+ end
103+
53104 def req_add_breakpoint lineno , path : temp_file_path , cond : nil
54105 case get_target_ui
55106 when 'vscode'
@@ -324,6 +375,8 @@ def execute_cdp_scenario_ scenario
324375 @backlog = [ ]
325376
326377 attach_to_cdp_server
378+ res = find_response :method , 'Debugger.paused' , 'C<D'
379+ @crt_frames = res . dig ( :params , :callFrames )
327380 scenario . call
328381 ensure
329382 @reader_thread &.kill
@@ -399,51 +452,8 @@ def close_reader
399452 end
400453 end
401454
402- def attach_to_dap_server
403- @sock = Socket . unix @remote_info . sock_path
404- @seq = 1
405- @reader_thread = Thread . new do
406- while res = recv_response
407- @queue . push res
408- end
409- rescue Detach
410- end
411- sleep 0.001 while @reader_thread . status != 'sleep'
412- @reader_thread . run
413- INITIALIZE_DAP_MSGS . each { |msg | send ( **msg ) }
414- end
415-
416455 HOST = '127.0.0.1'
417456
418- def attach_to_cdp_server
419- body = get_request HOST , @remote_info . port , '/json'
420- Timeout . timeout ( TIMEOUT_SEC ) do
421- sleep 0.001 until @remote_info . debuggee_backlog . join . include? 'Disconnected.'
422- end
423-
424- sock = Socket . tcp HOST , @remote_info . port
425- uuid = body [ 0 ] [ :id ]
426-
427- Timeout . timeout ( TIMEOUT_SEC ) do
428- sleep 0.001 until @remote_info . debuggee_backlog . join . match? ( /Disconnected\. \R .*Connected/ )
429- end
430-
431- @web_sock = WebSocketClient . new sock
432- @web_sock . handshake @remote_info . port , uuid
433- @id = 1
434- @reader_thread = Thread . new do
435- while res = @web_sock . extract_data
436- @queue . push res
437- end
438- rescue Detach
439- end
440- sleep 0.001 while @reader_thread . status != 'sleep'
441- @reader_thread . run
442- INITIALIZE_CDP_MSGS . each { |msg | send ( **msg ) }
443- res = find_response :method , 'Debugger.paused' , 'C<D'
444- @crt_frames = res . dig ( :params , :callFrames )
445- end
446-
447457 JAVASCRIPT_TYPE_TO_CLASS_MAPS = {
448458 'string' => String ,
449459 'number' => Integer ,
0 commit comments