Skip to content

Commit 904334c

Browse files
committed
Fix formats in evaluation methods for protocol tests
1 parent 0a25691 commit 904334c

4 files changed

Lines changed: 38 additions & 56 deletions

File tree

test/protocol/eval_test.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ def test_eval_evaluates_arithmetic_expressions
1717
run_protocol_scenario PROGRAM do
1818
req_add_breakpoint 5
1919
req_continue
20-
assert_repl_result 2, expression: 'a'
21-
assert_repl_result 4, expression: 'd'
22-
assert_repl_result 3, expression: '1+2'
20+
assert_repl_result({value: '2', type: 'Integer'}, 'a')
21+
assert_repl_result({value: '4', type: 'Integer'}, 'd')
22+
assert_repl_result({value: '3', type: 'Integer'}, '1+2')
2323
req_terminate_debuggee
2424
end
2525
end

test/protocol/hover_test.rb

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ def test_hover_matches_with_stopped_place
1717
run_protocol_scenario PROGRAM do
1818
req_add_breakpoint 4
1919
req_continue
20-
assert_hover_result 2, expression: 'b'
21-
assert_hover_result 3, expression: 'c'
22-
assert_hover_result 1, expression: 'a'
20+
assert_hover_result({value: '2', type: 'Integer'}, 'b')
21+
assert_hover_result({value: '3', type: 'Integer'}, 'c')
22+
assert_hover_result({value: '1', type: 'Integer'}, 'a')
2323
req_terminate_debuggee
2424
end
2525
end
@@ -32,8 +32,7 @@ class HoverTest2 < TestCase
3232

3333
def test_hover_returns_method_info
3434
run_protocol_scenario PROGRAM do
35-
b = TOPLEVEL_BINDING.dup
36-
assert_hover_result b.eval('self').method(:p), expression: 'p'
35+
assert_hover_result({value: /\#<Method:\s.*p.*/, type: 'Method'}, 'p')
3736
req_terminate_debuggee
3837
end
3938
end
@@ -79,13 +78,13 @@ def test_hover_returns_const_info
7978
run_protocol_scenario PROGRAM do
8079
req_add_breakpoint 31
8180
req_continue
82-
assert_hover_result Object.const_set('Abc', Module.new), expression: 'Abc'
83-
assert_hover_result Abc.const_set('Def123', Class.new), expression: 'Abc::Def123'
84-
assert_hover_result Abc::Def123.const_set('Ghi', Class.new), expression: 'Abc::Def123::Ghi'
85-
assert_hover_result Abc::Def123::Ghi, expression: 'Abc::Def123::Ghi.new'
86-
assert_hover_result Abc, expression: '::Abc.foo'
87-
assert_hover_result Abc::Def123, expression: '::Abc::Def123'
88-
assert_hover_result Abc::Def123, expression: '::Abc::Def123.bar'
81+
assert_hover_result({value: 'Abc', type: 'Module'}, 'Abc')
82+
assert_hover_result({value: 'Abc::Def123', type: 'Class'}, 'Abc::Def123')
83+
assert_hover_result({value: 'Abc::Def123::Ghi', type: 'Class'}, 'Abc::Def123::Ghi')
84+
assert_hover_result({value: 'Abc::Def123::Ghi', type: 'Class'}, 'Abc::Def123::Ghi.new')
85+
assert_hover_result({value: 'Abc', type: 'Module'}, '::Abc.foo')
86+
assert_hover_result({value: 'Abc::Def123', type: 'Class'}, '::Abc::Def123')
87+
assert_hover_result({value: 'Abc::Def123', type: 'Class'}, '::Abc::Def123.bar')
8988
req_terminate_debuggee
9089
end
9190
end

test/protocol/watch_test.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ class WatchTest < TestCase
1717
def test_watch_matches_with_stopped_place
1818
run_protocol_scenario PROGRAM do
1919
req_next
20-
assert_watch_result 2, expression: 'a'
20+
assert_watch_result({value: '2', type: 'Integer'}, 'a')
2121
req_next
22-
assert_watch_result 3, expression: 'a'
22+
assert_watch_result({value: '3', type: 'Integer'}, 'a')
2323
req_next
24-
assert_watch_result 4, expression: 'a'
24+
assert_watch_result({value: '4', type: 'Integer'}, 'a')
2525
req_terminate_debuggee
2626
end
2727
end

test/support/protocol_utils.rb

Lines changed: 21 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def assert_reattach
203203
end
204204
end
205205

206-
def assert_hover_result expected, expression: nil, frame_idx: 0
206+
def assert_hover_result expected, expression, frame_idx: 0
207207
case ENV['RUBY_DEBUG_TEST_UI']
208208
when 'vscode'
209209
assert_eval_result 'hover', expression, expected, frame_idx
@@ -212,7 +212,7 @@ def assert_hover_result expected, expression: nil, frame_idx: 0
212212
end
213213
end
214214

215-
def assert_repl_result expected, expression: nil, frame_idx: 0
215+
def assert_repl_result expected, expression, frame_idx: 0
216216
case ENV['RUBY_DEBUG_TEST_UI']
217217
when 'vscode'
218218
assert_eval_result 'repl', expression, expected, frame_idx
@@ -221,7 +221,7 @@ def assert_repl_result expected, expression: nil, frame_idx: 0
221221
end
222222
end
223223

224-
def assert_watch_result expected, expression: nil, frame_idx: 0
224+
def assert_watch_result expected, expression, frame_idx: 0
225225
case ENV['RUBY_DEBUG_TEST_UI']
226226
when 'vscode'
227227
assert_eval_result 'watch', expression, expected, frame_idx
@@ -367,6 +367,13 @@ def attach_to_cdp_server
367367
@crt_frames = res.dig(:params, :callFrames)
368368
end
369369

370+
JAVASCRIPT_TYPE_TO_CLASS_MAPS = {
371+
'string' => String,
372+
'number' => Integer,
373+
'boolean' => [TrueClass, FalseClass],
374+
'symbol' => Symbol
375+
}
376+
370377
def assert_eval_result context, expression, expected, frame_idx
371378
case ENV['RUBY_DEBUG_TEST_UI']
372379
when 'vscode'
@@ -384,17 +391,15 @@ def assert_eval_result context, expression, expected, frame_idx
384391
assert_dap_response :EvaluateResponse, res
385392

386393
failure_msg = FailureMessage.new{create_protocol_message "result:\n#{JSON.pretty_generate res}"}
387-
if expected.is_a? String
388-
expected_val = expected
389-
else
390-
expected_val = expected.inspect
394+
if expected[:type] == 'String'
395+
expected[:value] = expected[:value].inspect
391396
end
392-
result_val = res.dig(:body, :result)
393-
assert_equal expected_val, result_val, failure_msg
394397

395-
expected_type = expected.class.inspect
396398
result_type = res.dig(:body, :type)
397-
assert_equal expected_type, result_type, failure_msg
399+
assert_equal expected[:type], result_type, failure_msg
400+
401+
result_val = res.dig(:body, :result)
402+
assert_match expected[:value], result_val, failure_msg
398403
when 'chrome'
399404
f_id = @crt_frames.dig(frame_idx, :callFrameId)
400405
send_request 'Debugger.evaluateOnCallFrame',
@@ -405,35 +410,13 @@ def assert_eval_result context, expression, expected, frame_idx
405410
assert_cdp_response 'Debugger.evaluateOnCallFrame', res
406411

407412
failure_msg = FailureMessage.new{create_protocol_message "result:\n#{JSON.pretty_generate res}"}
408-
if expected.is_a? String
409-
expected_val = expected
410-
else
411-
expected_val = expected.inspect
412-
end
413-
result_val = res.dig(:result, :result, :description)
414-
assert_equal expected_val, result_val, failure_msg
415413

416-
expected_type = get_expected_type expected
417-
result_type = res.dig(:result, :result, :type)
418-
if result_type == 'object'
419-
result_type = res.dig(:result, :result, :className)
420-
end
421-
assert_equal expected_type, result_type, failure_msg
422-
end
423-
end
414+
cl = res.dig(:result, :result, :className) || JAVASCRIPT_TYPE_TO_CLASS_MAPS[res.dig(:result, :result, :type)].inspect
415+
result_type = Array cl
416+
assert_include result_type, expected[:type], failure_msg
424417

425-
def get_expected_type obj
426-
case obj
427-
when String
428-
'string'
429-
when TrueClass, FalseClass
430-
'boolean'
431-
when Symbol
432-
'symbol'
433-
when Integer, Float
434-
'number'
435-
else
436-
obj.class.inspect
418+
result_val = res.dig(:result, :result, :description)
419+
assert_match expected[:value], result_val, failure_msg
437420
end
438421
end
439422

0 commit comments

Comments
 (0)