(case_setup_multiprocessing_dap, apply_multiprocessing_patch)
| 5420 | |
| 5421 | @pytest.mark.parametrize("apply_multiprocessing_patch", [True]) |
| 5422 | def test_no_subprocess_patching(case_setup_multiprocessing_dap, apply_multiprocessing_patch): |
| 5423 | import threading |
| 5424 | from tests_python.debugger_unittest import AbstractWriterThread |
| 5425 | |
| 5426 | def update_command_line_args(writer, args): |
| 5427 | ret = debugger_unittest.AbstractWriterThread.update_command_line_args(writer, args) |
| 5428 | ret.insert(ret.index("--client"), "--multiprocess") |
| 5429 | ret.insert(ret.index("--client"), "--debug-mode") |
| 5430 | ret.insert(ret.index("--client"), "debugpy-dap") |
| 5431 | ret.insert(ret.index("--client"), "--json-dap-http") |
| 5432 | |
| 5433 | if apply_multiprocessing_patch: |
| 5434 | ret.append("apply-multiprocessing-patch") |
| 5435 | return ret |
| 5436 | |
| 5437 | with case_setup_multiprocessing_dap.test_file( |
| 5438 | "_debugger_case_no_subprocess_patching.py", update_command_line_args=update_command_line_args |
| 5439 | ) as writer: |
| 5440 | json_facade = JsonFacade(writer) |
| 5441 | json_facade.write_launch() |
| 5442 | |
| 5443 | break1_line = writer.get_line_index_with_content("break 1 here") |
| 5444 | break2_line = writer.get_line_index_with_content("break 2 here") |
| 5445 | json_facade.write_set_breakpoints([break1_line, break2_line]) |
| 5446 | |
| 5447 | server_socket = writer.server_socket |
| 5448 | |
| 5449 | class SecondaryProcessWriterThread(AbstractWriterThread): |
| 5450 | TEST_FILE = writer.get_main_filename() |
| 5451 | _sequence = -1 |
| 5452 | |
| 5453 | class SecondaryProcessThreadCommunication(threading.Thread): |
| 5454 | |
| 5455 | def run(self): |
| 5456 | from tests_python.debugger_unittest import ReaderThread |
| 5457 | |
| 5458 | expected_connections = 1 |
| 5459 | |
| 5460 | for _ in range(expected_connections): |
| 5461 | server_socket.listen(1) |
| 5462 | self.server_socket = server_socket |
| 5463 | new_sock, addr = server_socket.accept() |
| 5464 | |
| 5465 | reader_thread = ReaderThread(new_sock) |
| 5466 | reader_thread.name = " *** Multiprocess Reader Thread" |
| 5467 | reader_thread.start() |
| 5468 | |
| 5469 | writer2 = SecondaryProcessWriterThread() |
| 5470 | writer2.reader_thread = reader_thread |
| 5471 | writer2.sock = new_sock |
| 5472 | json_facade2 = JsonFacade(writer2) |
| 5473 | |
| 5474 | json_facade2.write_set_breakpoints([break1_line, break2_line]) |
| 5475 | json_facade2.write_make_initial_run() |
| 5476 | |
| 5477 | json_facade2.wait_for_thread_stopped() |
| 5478 | json_facade2.write_continue() |
| 5479 |
nothing calls this directly
no test coverage detected