MCPcopy Create free account
hub / github.com/fabioz/PyDev.Debugger / test_stack_and_variables

Function test_stack_and_variables

tests_python/test_debugger_json.py:3090–3195  ·  view source on GitHub ↗
(case_setup_dap)

Source from the content-addressed store, hash-verified

3088
3089@pytest.mark.skipif(IS_JYTHON, reason="Putting unicode on frame vars does not work on Jython.")
3090def test_stack_and_variables(case_setup_dap):
3091 with case_setup_dap.test_file("_debugger_case_local_variables.py") as writer:
3092 json_facade = JsonFacade(writer)
3093
3094 json_facade.write_set_breakpoints(writer.get_line_index_with_content("Break here"))
3095
3096 json_facade.write_make_initial_run()
3097
3098 json_hit = json_facade.wait_for_thread_stopped()
3099
3100 # : :type stack_trace_response: StackTraceResponse
3101 # : :type stack_trace_response_body: StackTraceResponseBody
3102 # : :type stack_frame: StackFrame
3103
3104 # Check stack trace format.
3105 stack_trace_request = json_facade.write_request(
3106 pydevd_schema.StackTraceRequest(
3107 pydevd_schema.StackTraceArguments(threadId=json_hit.thread_id, format={"module": True, "line": True})
3108 )
3109 )
3110 stack_trace_response = json_facade.wait_for_response(stack_trace_request)
3111 stack_trace_response_body = stack_trace_response.body
3112 stack_frame = next(iter(stack_trace_response_body.stackFrames))
3113 assert stack_frame["name"] == "__main__.Call : 4"
3114
3115 # Regular stack trace request (no format).
3116 json_hit = json_facade.get_stack_as_json_hit(json_hit.thread_id)
3117 stack_trace_response = json_hit.stack_trace_response
3118 stack_trace_response_body = stack_trace_response.body
3119 assert len(stack_trace_response_body.stackFrames) == 2
3120 stack_frame = next(iter(stack_trace_response_body.stackFrames))
3121 assert stack_frame["name"] == "Call"
3122 assert stack_frame["source"]["path"].endswith("_debugger_case_local_variables.py")
3123
3124 name_to_scope = json_facade.get_name_to_scope(stack_frame["id"])
3125 scope = name_to_scope["Locals"]
3126 frame_variables_reference = scope.variablesReference
3127 assert isinstance(frame_variables_reference, int)
3128
3129 variables_response = json_facade.get_variables_response(frame_variables_reference)
3130 # : :type variables_response: VariablesResponse
3131 assert len(variables_response.body.variables) == 0 # No variables expected here
3132
3133 json_facade.write_step_next(json_hit.thread_id)
3134 json_hit = json_facade.wait_for_thread_stopped("step")
3135
3136 variables_response = json_facade.get_variables_response(frame_variables_reference)
3137 # : :type variables_response: VariablesResponse
3138 assert variables_response.body.variables == [
3139 {
3140 "name": "variable_for_test_1",
3141 "value": "10",
3142 "type": "int",
3143 "evaluateName": "variable_for_test_1",
3144 "variablesReference": 0,
3145 }
3146 ]
3147

Callers

nothing calls this directly

Calls 15

write_set_breakpointsMethod · 0.95
write_requestMethod · 0.95
wait_for_responseMethod · 0.95
get_stack_as_json_hitMethod · 0.95
get_name_to_scopeMethod · 0.95
write_step_nextMethod · 0.95
write_set_variableMethod · 0.95
write_continueMethod · 0.95
JsonFacadeClass · 0.85

Tested by

no test coverage detected