@@ -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