(case_setup_dap)
| 3196 | |
| 3197 | |
| 3198 | def test_hex_variables(case_setup_dap): |
| 3199 | with case_setup_dap.test_file("_debugger_case_local_variables_hex.py") as writer: |
| 3200 | json_facade = JsonFacade(writer) |
| 3201 | |
| 3202 | writer.write_add_breakpoint(writer.get_line_index_with_content("Break here")) |
| 3203 | |
| 3204 | json_facade.write_make_initial_run() |
| 3205 | |
| 3206 | json_hit = json_facade.wait_for_thread_stopped() |
| 3207 | |
| 3208 | # : :type stack_trace_response: StackTraceResponse |
| 3209 | # : :type stack_trace_response_body: StackTraceResponseBody |
| 3210 | # : :type stack_frame: StackFrame |
| 3211 | stack_trace_request = json_facade.write_request( |
| 3212 | pydevd_schema.StackTraceRequest(pydevd_schema.StackTraceArguments(threadId=json_hit.thread_id)) |
| 3213 | ) |
| 3214 | stack_trace_response = json_facade.wait_for_response(stack_trace_request) |
| 3215 | stack_trace_response_body = stack_trace_response.body |
| 3216 | assert len(stack_trace_response_body.stackFrames) == 2 |
| 3217 | stack_frame = next(iter(stack_trace_response_body.stackFrames)) |
| 3218 | assert stack_frame["name"] == "Call" |
| 3219 | assert stack_frame["source"]["path"].endswith("_debugger_case_local_variables_hex.py") |
| 3220 | |
| 3221 | name_to_scope = json_facade.get_name_to_scope(stack_frame["id"]) |
| 3222 | |
| 3223 | scope = name_to_scope["Locals"] |
| 3224 | frame_variables_reference = scope.variablesReference |
| 3225 | assert isinstance(frame_variables_reference, int) |
| 3226 | |
| 3227 | fmt = {"hex": True} |
| 3228 | variables_request = json_facade.write_request( |
| 3229 | pydevd_schema.VariablesRequest(pydevd_schema.VariablesArguments(frame_variables_reference, format=fmt)) |
| 3230 | ) |
| 3231 | variables_response = json_facade.wait_for_response(variables_request) |
| 3232 | |
| 3233 | # : :type variables_response: VariablesResponse |
| 3234 | variable_for_test_1, variable_for_test_2, variable_for_test_3, variable_for_test_4 = sorted( |
| 3235 | list(v for v in variables_response.body.variables if v["name"].startswith("variables_for_test")), key=lambda v: v["name"] |
| 3236 | ) |
| 3237 | assert variable_for_test_1 == { |
| 3238 | "name": "variables_for_test_1", |
| 3239 | "value": "0x64", |
| 3240 | "type": "int", |
| 3241 | "evaluateName": "variables_for_test_1", |
| 3242 | "variablesReference": 0, |
| 3243 | } |
| 3244 | |
| 3245 | assert isinstance(variable_for_test_2.pop("variablesReference"), int) |
| 3246 | assert variable_for_test_2 == { |
| 3247 | "name": "variables_for_test_2", |
| 3248 | "value": "[0x1, 0xa, 0x64]", |
| 3249 | "type": "list", |
| 3250 | "evaluateName": "variables_for_test_2", |
| 3251 | } |
| 3252 | |
| 3253 | assert isinstance(variable_for_test_3.pop("variablesReference"), int) |
| 3254 | assert variable_for_test_3 == { |
| 3255 | "name": "variables_for_test_3", |
nothing calls this directly
no test coverage detected