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

Function test_source_reference_no_file

tests_python/test_debugger_json.py:4653–4710  ·  view source on GitHub ↗
(case_setup_dap, tmpdir)

Source from the content-addressed store, hash-verified

4651
4652@pytest.mark.skipif(IS_JYTHON, reason="Flaky on Jython.")
4653def test_source_reference_no_file(case_setup_dap, tmpdir):
4654 with case_setup_dap.test_file("_debugger_case_source_reference.py") as writer:
4655 json_facade = JsonFacade(writer)
4656
4657 json_facade.write_launch(
4658 debugOptions=["DebugStdLib"],
4659 pathMappings=[
4660 {
4661 "localRoot": os.path.dirname(writer.TEST_FILE),
4662 "remoteRoot": os.path.dirname(writer.TEST_FILE),
4663 }
4664 ],
4665 )
4666
4667 writer.write_add_breakpoint(writer.get_line_index_with_content("breakpoint"))
4668 json_facade.write_make_initial_run()
4669
4670 # First hit is for breakpoint reached via a stack frame that doesn't have source.
4671
4672 json_hit = json_facade.wait_for_thread_stopped()
4673 stack_trace_request = json_facade.write_request(
4674 pydevd_schema.StackTraceRequest(
4675 pydevd_schema.StackTraceArguments(threadId=json_hit.thread_id, format={"module": True, "line": True})
4676 )
4677 )
4678 stack_trace_response = json_facade.wait_for_response(stack_trace_request)
4679 stack_trace_response_body = stack_trace_response.body
4680 stack_frame = stack_trace_response_body.stackFrames[1]
4681 assert stack_frame["source"]["path"] == "<string>"
4682 source_reference = stack_frame["source"]["sourceReference"]
4683 assert source_reference != 0
4684
4685 json_facade.write_get_source(source_reference, success=False)
4686
4687 json_facade.write_continue()
4688
4689 # First hit is for breakpoint reached via a stack frame that doesn't have source
4690 # on disk, but which can be retrieved via linecache.
4691
4692 json_hit = json_facade.wait_for_thread_stopped()
4693 stack_trace_request = json_facade.write_request(
4694 pydevd_schema.StackTraceRequest(
4695 pydevd_schema.StackTraceArguments(threadId=json_hit.thread_id, format={"module": True, "line": True})
4696 )
4697 )
4698 stack_trace_response = json_facade.wait_for_response(stack_trace_request)
4699 stack_trace_response_body = stack_trace_response.body
4700 stack_frame = stack_trace_response_body.stackFrames[1]
4701 print(stack_frame["source"]["path"])
4702 assert stack_frame["source"]["path"] == "<something>"
4703 source_reference = stack_frame["source"]["sourceReference"]
4704 assert source_reference != 0
4705
4706 response = json_facade.write_get_source(source_reference)
4707 assert response.body.content == "foo()\n"
4708
4709 json_facade.write_continue()
4710 writer.finished_ok = True

Callers

nothing calls this directly

Calls 11

write_launchMethod · 0.95
write_requestMethod · 0.95
wait_for_responseMethod · 0.95
write_get_sourceMethod · 0.95
write_continueMethod · 0.95
JsonFacadeClass · 0.85
test_fileMethod · 0.80
write_add_breakpointMethod · 0.80

Tested by

no test coverage detected