(case_setup_multiprocessing_dap)
| 6685 | |
| 6686 | @pytest.mark.skipif(sys.platform == "win32", reason="Windows does not have execvp.") |
| 6687 | def test_replace_process(case_setup_multiprocessing_dap): |
| 6688 | import threading |
| 6689 | from tests_python.debugger_unittest import AbstractWriterThread |
| 6690 | from _pydevd_bundle._debug_adapter.pydevd_schema import ExitedEvent |
| 6691 | |
| 6692 | with case_setup_multiprocessing_dap.test_file( |
| 6693 | "_debugger_case_replace_process.py", |
| 6694 | ) as writer: |
| 6695 | json_facade = JsonFacade(writer) |
| 6696 | json_facade.write_launch() |
| 6697 | |
| 6698 | break1_line = writer.get_line_index_with_content("print('In sub')") |
| 6699 | json_facade.write_set_breakpoints([break1_line]) |
| 6700 | |
| 6701 | server_socket = writer.server_socket |
| 6702 | secondary_finished_ok = [False] |
| 6703 | |
| 6704 | class SecondaryProcessWriterThread(AbstractWriterThread): |
| 6705 | TEST_FILE = writer.get_main_filename() |
| 6706 | _sequence = -1 |
| 6707 | |
| 6708 | class SecondaryProcessThreadCommunication(threading.Thread): |
| 6709 | |
| 6710 | def run(self): |
| 6711 | from tests_python.debugger_unittest import ReaderThread |
| 6712 | |
| 6713 | server_socket.listen(1) |
| 6714 | self.server_socket = server_socket |
| 6715 | new_sock, addr = server_socket.accept() |
| 6716 | |
| 6717 | reader_thread = ReaderThread(new_sock) |
| 6718 | reader_thread.name = " *** Multiprocess Reader Thread" |
| 6719 | reader_thread.start() |
| 6720 | |
| 6721 | writer2 = SecondaryProcessWriterThread() |
| 6722 | writer2.reader_thread = reader_thread |
| 6723 | writer2.sock = new_sock |
| 6724 | json_facade2 = JsonFacade(writer2) |
| 6725 | |
| 6726 | json_facade2.write_set_breakpoints( |
| 6727 | [ |
| 6728 | break1_line, |
| 6729 | ] |
| 6730 | ) |
| 6731 | json_facade2.write_make_initial_run() |
| 6732 | |
| 6733 | json_facade2.wait_for_thread_stopped() |
| 6734 | json_facade2.write_continue() |
| 6735 | secondary_finished_ok[0] = True |
| 6736 | |
| 6737 | secondary_process_thread_communication = SecondaryProcessThreadCommunication() |
| 6738 | secondary_process_thread_communication.start() |
| 6739 | time.sleep(0.1) |
| 6740 | |
| 6741 | json_facade.write_make_initial_run() |
| 6742 | exited_event = json_facade.wait_for_json_message(ExitedEvent) |
| 6743 | assert exited_event.body.kwargs["pydevdReason"] == "processReplaced" |
| 6744 |
nothing calls this directly
no test coverage detected