MCPcopy Index your code
hub / github.com/fabioz/PyDev.Debugger / test_terminate

Function test_terminate

tests_python/test_debugger_json.py:5570–5681  ·  view source on GitHub ↗
(case_setup_dap, scenario, check_subprocesses)

Source from the content-addressed store, hash-verified

5568 ],
5569)
5570def test_terminate(case_setup_dap, scenario, check_subprocesses):
5571 import psutil
5572
5573 def check_test_suceeded_msg(writer, stdout, stderr):
5574 return "TEST SUCEEDED" not in "".join(stdout)
5575
5576 def update_command_line_args(writer, args):
5577 ret = debugger_unittest.AbstractWriterThread.update_command_line_args(writer, args)
5578 if check_subprocesses in ("kill_subprocesses", "dont_kill_subprocesses"):
5579 ret.append("check-subprocesses")
5580 if check_subprocesses in ("kill_subprocesses_ignore_pid",):
5581 ret.append("check-subprocesses-ignore-pid")
5582 return ret
5583
5584 with case_setup_dap.test_file(
5585 "_debugger_case_terminate.py",
5586 check_test_suceeded_msg=check_test_suceeded_msg,
5587 update_command_line_args=update_command_line_args,
5588 EXPECTED_RETURNCODE="any" if check_subprocesses == "kill_subprocesses_ignore_pid" else 0,
5589 ) as writer:
5590 json_facade = JsonFacade(writer)
5591 if check_subprocesses == "dont_kill_subprocesses":
5592 json_facade.write_launch(terminateChildProcesses=False)
5593
5594 json_facade.write_make_initial_run()
5595 response = json_facade.write_initialize()
5596 pid = response.to_dict()["body"]["pydevd"]["processId"]
5597
5598 if check_subprocesses in ("kill_subprocesses", "dont_kill_subprocesses", "kill_subprocesses_ignore_pid"):
5599 process_ids_to_check = [pid]
5600 p = psutil.Process(pid)
5601
5602 def wait_for_child_processes():
5603 children = p.children(recursive=True)
5604 found = len(children)
5605 if found == 8:
5606 process_ids_to_check.extend([x.pid for x in children])
5607 return True
5608 return False
5609
5610 wait_for_condition(wait_for_child_processes)
5611
5612 if scenario == "terminate_request":
5613 json_facade.write_terminate()
5614 elif scenario == "terminate_debugee":
5615 json_facade.write_disconnect(terminate_debugee=True)
5616 else:
5617 raise AssertionError("Unexpected: %s" % (scenario,))
5618 json_facade.wait_for_terminated()
5619
5620 if check_subprocesses in ("kill_subprocesses", "dont_kill_subprocesses", "kill_subprocesses_ignore_pid"):
5621
5622 def is_pid_alive(pid):
5623 # Note: the process may be a zombie process in Linux
5624 # (althought it's killed it remains in that state
5625 # because we're monitoring it).
5626 try:
5627 proc = psutil.Process(pid)

Callers

nothing calls this directly

Calls 12

write_launchMethod · 0.95
write_initializeMethod · 0.95
write_terminateMethod · 0.95
write_disconnectMethod · 0.95
wait_for_terminatedMethod · 0.95
killMethod · 0.95
wait_for_conditionFunction · 0.90
JsonFacadeClass · 0.85
get_live_pidsFunction · 0.85
test_fileMethod · 0.80
to_dictMethod · 0.45

Tested by

no test coverage detected