(self, event)
| 545 | return request |
| 546 | |
| 547 | def _process_event(self, event): |
| 548 | occ = self.timeline.record_event(event, block=False) |
| 549 | |
| 550 | if event.event == "exited": |
| 551 | self.observe(occ) |
| 552 | self.exit_code = event("exitCode", int) |
| 553 | self.exit_reason = event("reason", str, optional=True) |
| 554 | assert self.exit_code == self.expected_exit_code |
| 555 | |
| 556 | elif event.event == "terminated": |
| 557 | # Server socket should be closed next. |
| 558 | self.expected_adapter_sockets.pop("server", None) |
| 559 | |
| 560 | elif event.event == "debugpyAttach": |
| 561 | self.observe(occ) |
| 562 | pid = event("subProcessId", int) |
| 563 | watchdog.register_spawn(pid, f"{self.debuggee_id}-subprocess-{pid}") |
| 564 | |
| 565 | elif event.event == "debugpySockets": |
| 566 | assert not self.is_subprocess |
| 567 | sockets = list(event("sockets", json.array(json.object()))) |
| 568 | for purpose, expected_socket in self.expected_adapter_sockets.items(): |
| 569 | if expected_socket is None: |
| 570 | continue |
| 571 | socket = None |
| 572 | for socket in sockets: |
| 573 | if socket == expected_socket: |
| 574 | break |
| 575 | assert ( |
| 576 | socket is not None |
| 577 | ), f"Expected {purpose} socket {expected_socket} not reported by adapter" |
| 578 | sockets.remove(socket) |
| 579 | assert not sockets, f"Unexpected sockets reported by adapter: {sockets}" |
| 580 | |
| 581 | if self.start_command == "launch": |
| 582 | if "launcher" in self.expected_adapter_sockets: |
| 583 | # If adapter has just reported the launcher socket, it shouldn't be |
| 584 | # reported thereafter. |
| 585 | self.expected_adapter_sockets["launcher"] = None |
| 586 | elif "server" in self.expected_adapter_sockets: |
| 587 | # If adapter just reported the server socket, the next event should |
| 588 | # report the launcher socket. |
| 589 | self.expected_adapter_sockets["launcher"] = { |
| 590 | "host": some.str, |
| 591 | "port": some.int, |
| 592 | "internal": False, |
| 593 | } |
| 594 | |
| 595 | def run_in_terminal(self, args, cwd, env): |
| 596 | exe = args.pop(0) |
nothing calls this directly
no test coverage detected