Skip to content

Commit ab01462

Browse files
author
ono-max
committed
Skip tests for DAP if the environmental variable is not set
1 parent f32c6b5 commit ab01462

File tree

1 file changed

+90
-84
lines changed

1 file changed

+90
-84
lines changed

test/support/dap_utils.rb

Lines changed: 90 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -161,99 +161,105 @@ def connect_to_dap_server path, test_info
161161
end
162162

163163
TIMEOUT_SEC = (ENV['RUBY_DEBUG_TIMEOUT_SEC'] || 10).to_i
164+
dt = ENV['RUBY_DEBUG_DAP_TEST']
165+
DAP_TEST = dt == 'true' || dt == '1'
164166

165167
def run_dap_scenario program, &msgs
166-
write_temp_file(strip_line_num(program))
167-
168-
test_info = DAP_TestInfo.new([], [])
169-
remote_info = setup_unix_doman_socket_remote_debuggee
170-
sock = nil
171-
reader_thread = nil
172-
res_log = test_info.res_backlog
173-
backlog = test_info.backlog
174-
target_msg = nil
175-
176-
msgs.call.each{|msg|
177-
case msg[:type]
178-
when 'request'
179-
if msg[:command] == 'initialize'
180-
sock, reader_thread = connect_to_dap_server remote_info.sock_path, test_info
181-
end
182-
str = JSON.dump(msg)
183-
sock.write "Content-Length: #{str.bytesize}\r\n\r\n#{str}"
184-
backlog << "V>D #{str}"
185-
when 'response'
186-
result = nil
187-
target_msg = msg
188-
Timeout.timeout(TIMEOUT_SEC) do
189-
loop do
190-
res_log.each{|r|
191-
if r[:request_seq] == msg[:request_seq]
192-
result = r
193-
break
194-
end
195-
}
196-
break unless result.nil?
197-
198-
sleep 0.01
168+
pend 'Tests for DAP were skipped. You can enable them with RUBY_DEBUG_DAP_TEST=1.' unless DAP_TEST
169+
170+
begin
171+
write_temp_file(strip_line_num(program))
172+
173+
test_info = DAP_TestInfo.new([], [])
174+
remote_info = setup_unix_doman_socket_remote_debuggee
175+
sock = nil
176+
reader_thread = nil
177+
res_log = test_info.res_backlog
178+
backlog = test_info.backlog
179+
target_msg = nil
180+
181+
msgs.call.each{|msg|
182+
case msg[:type]
183+
when 'request'
184+
if msg[:command] == 'initialize'
185+
sock, reader_thread = connect_to_dap_server remote_info.sock_path, test_info
199186
end
200-
end
187+
str = JSON.dump(msg)
188+
sock.write "Content-Length: #{str.bytesize}\r\n\r\n#{str}"
189+
backlog << "V>D #{str}"
190+
when 'response'
191+
result = nil
192+
target_msg = msg
193+
Timeout.timeout(TIMEOUT_SEC) do
194+
loop do
195+
res_log.each{|r|
196+
if r[:request_seq] == msg[:request_seq]
197+
result = r
198+
break
199+
end
200+
}
201+
break unless result.nil?
201202

202-
msg.delete :seq
203-
hash = ProtocolParser.new.parse msg
204-
hash.each{|r|
205-
k, v = r
206-
case v
207-
when Regexp
208-
assert_match v, result.dig(*k).to_s, FailureMessage.new{create_protocol_msg backlog, remote_info, "expected:\n#{JSON.pretty_generate msg}\n\nresult:\n#{JSON.pretty_generate result}"}
209-
else
210-
assert_equal v, result.dig(*k), FailureMessage.new{create_protocol_msg backlog, remote_info, "expected:\n#{JSON.pretty_generate msg}\n\nresult:\n#{JSON.pretty_generate result}"}
203+
sleep 0.01
204+
end
211205
end
212-
}
213-
if msg[:command] == 'disconnect'
214-
res_log.clear
215-
reader_thread.raise Detach
216-
sock.close
217-
end
218-
when 'event'
219-
result = nil
220-
target_msg = msg
221-
Timeout.timeout(TIMEOUT_SEC) do
222-
loop do
223-
res_log.each{|r|
224-
if r[:event] == msg[:event]
225-
result = r
226-
break
227-
end
228-
}
229-
break unless result.nil?
230-
231-
sleep 0.01
206+
207+
msg.delete :seq
208+
hash = ProtocolParser.new.parse msg
209+
hash.each{|r|
210+
k, v = r
211+
case v
212+
when Regexp
213+
assert_match v, result.dig(*k).to_s, FailureMessage.new{create_protocol_msg backlog, remote_info, "expected:\n#{JSON.pretty_generate msg}\n\nresult:\n#{JSON.pretty_generate result}"}
214+
else
215+
assert_equal v, result.dig(*k), FailureMessage.new{create_protocol_msg backlog, remote_info, "expected:\n#{JSON.pretty_generate msg}\n\nresult:\n#{JSON.pretty_generate result}"}
216+
end
217+
}
218+
if msg[:command] == 'disconnect'
219+
res_log.clear
220+
reader_thread.raise Detach
221+
sock.close
232222
end
233-
end
223+
when 'event'
224+
result = nil
225+
target_msg = msg
226+
Timeout.timeout(TIMEOUT_SEC) do
227+
loop do
228+
res_log.each{|r|
229+
if r[:event] == msg[:event]
230+
result = r
231+
break
232+
end
233+
}
234+
break unless result.nil?
234235

235-
msg.delete :seq
236-
hash = ProtocolParser.new.parse msg
237-
hash.each{|r|
238-
k, v = r
239-
case v
240-
when Regexp
241-
assert_match v, result.dig(*k).to_s, FailureMessage.new{create_protocol_msg backlog, remote_info, "expected:\n#{JSON.pretty_generate msg}\n\nresult:\n#{JSON.pretty_generate result}"}
242-
else
243-
assert_equal v, result.dig(*k), FailureMessage.new{create_protocol_msg backlog, remote_info, "expected:\n#{JSON.pretty_generate msg}\n\nresult:\n#{JSON.pretty_generate result}"}
236+
sleep 0.01
237+
end
244238
end
245-
}
246-
res_log.delete result
239+
240+
msg.delete :seq
241+
hash = ProtocolParser.new.parse msg
242+
hash.each{|r|
243+
k, v = r
244+
case v
245+
when Regexp
246+
assert_match v, result.dig(*k).to_s, FailureMessage.new{create_protocol_msg backlog, remote_info, "expected:\n#{JSON.pretty_generate msg}\n\nresult:\n#{JSON.pretty_generate result}"}
247+
else
248+
assert_equal v, result.dig(*k), FailureMessage.new{create_protocol_msg backlog, remote_info, "expected:\n#{JSON.pretty_generate msg}\n\nresult:\n#{JSON.pretty_generate result}"}
249+
end
250+
}
251+
res_log.delete result
252+
end
253+
}
254+
rescue Timeout::Error
255+
flunk create_protocol_msg backlog, remote_info, "TIMEOUT ERROR (#{TIMEOUT_SEC} sec) while waiting for the following response.\n#{JSON.pretty_generate target_msg}"
256+
ensure
257+
reader_thread.kill
258+
sock.close
259+
kill_safely remote_info.pid, :debuggee, test_info
260+
if test_info.failed_process
261+
flunk create_protocol_msg backlog, remote_info, "Expected the debuggee program to finish"
247262
end
248-
}
249-
rescue Timeout::Error
250-
flunk create_protocol_msg backlog, remote_info, "TIMEOUT ERROR (#{TIMEOUT_SEC} sec) while waiting for the following response.\n#{JSON.pretty_generate target_msg}"
251-
ensure
252-
reader_thread.kill
253-
sock.close
254-
kill_safely remote_info.pid, :debuggee, test_info
255-
if test_info.failed_process
256-
flunk create_protocol_msg backlog, remote_info, "Expected the debuggee program to finish"
257263
end
258264
end
259265
end

0 commit comments

Comments
 (0)