parser.error("argument -m: not allowed with argument --pid")
try:
attach(opts.pid, opts.commands)
- except PermissionError as e:
+ except RuntimeError:
+ print(
+ f"Cannot attach to pid {opts.pid}, please make sure that the process exists "
+ "and is using the same Python version."
+ )
+ sys.exit(1)
+ except PermissionError:
exit_with_permission_help_text()
return
elif opts.module:
self.assertNotIn("while x == 1", output["client"]["stdout"])
self.assertIn("while x == 1", re.sub("\x1b[^m]*m", "", output["client"]["stdout"]))
+ def test_attach_to_non_existent_process(self):
+ with force_color(False):
+ result = subprocess.run([sys.executable, "-m", "pdb", "-p", "999999"], text=True, capture_output=True)
+ self.assertNotEqual(result.returncode, 0)
+ if sys.platform == "darwin":
+ # On MacOS, attaching to a non-existent process gives PermissionError
+ error = "The specified process cannot be attached to due to insufficient permissions"
+ else:
+ error = "Cannot attach to pid 999999, please make sure that the process exists"
+ self.assertIn(error, result.stdout)
+
+
if __name__ == "__main__":
unittest.main()