(case_setup_dap, tmpdir)
| 4768 | |
| 4769 | @pytest.mark.skipif(not IS_CPYTHON, reason="CPython only test.") |
| 4770 | def test_show_bytecode_json(case_setup_dap, tmpdir): |
| 4771 | with case_setup_dap.test_file("_debugger_case_show_bytecode.py") as writer: |
| 4772 | json_facade = JsonFacade(writer) |
| 4773 | |
| 4774 | json_facade.write_launch(justMyCode=False) |
| 4775 | |
| 4776 | writer.write_add_breakpoint(writer.get_line_index_with_content("breakpoint")) |
| 4777 | json_facade.write_make_initial_run() |
| 4778 | |
| 4779 | # First hit is for breakpoint reached via a stack frame that doesn't have source. |
| 4780 | |
| 4781 | json_hit = json_facade.wait_for_thread_stopped() |
| 4782 | stack_trace_response_body = json_hit.stack_trace_response.body |
| 4783 | source_references = [] |
| 4784 | for stack_frame in stack_trace_response_body.stackFrames: |
| 4785 | if stack_frame["source"]["path"] == "<something>": |
| 4786 | source_reference = stack_frame["source"]["sourceReference"] |
| 4787 | assert source_reference != 0 |
| 4788 | source_references.append(source_reference) |
| 4789 | |
| 4790 | # Each frame gets its own source reference. |
| 4791 | assert len(set(source_references)) == 2 |
| 4792 | |
| 4793 | for source_reference in source_references: |
| 4794 | response = json_facade.write_get_source(source_reference) |
| 4795 | assert "MyClass" in response.body.content or "foo()" in response.body.content |
| 4796 | |
| 4797 | json_facade.write_continue() |
| 4798 | writer.finished_ok = True |
| 4799 | |
| 4800 | |
| 4801 | @pytest.mark.skipif(not TEST_DJANGO, reason="No django available") |
nothing calls this directly
no test coverage detected