https://github.com/python/cpython/commit/79ba56433e5ced7740866d1112b0cead86f627f6
commit: 79ba56433e5ced7740866d1112b0cead86f627f6
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2025-04-25T13:14:59+02:00
summary:
gh-132912: Kill the process on error in test_remote_pdb (#132920)
If a test fails (such as an assertion error), kill the child process.
files:
M Lib/test/test_remote_pdb.py
diff --git a/Lib/test/test_remote_pdb.py b/Lib/test/test_remote_pdb.py
index cc0ada12814afd..d3267be79ece0e 100644
--- a/Lib/test/test_remote_pdb.py
+++ b/Lib/test/test_remote_pdb.py
@@ -20,6 +20,17 @@
from pdb import _PdbServer, _PdbClient
+@contextmanager
+def kill_on_error(proc):
+ """Context manager killing the subprocess if a Python exception is
raised."""
+ with proc:
+ try:
+ yield proc
+ except:
+ proc.kill()
+ raise
+
+
class MockSocketFile:
"""Mock socket file for testing _PdbServer without actual socket
connections."""
@@ -360,7 +371,7 @@ def test_connect_and_basic_commands(self):
self._create_script()
process, client_file = self._connect_and_get_client_file()
- with process:
+ with kill_on_error(process):
# We should receive initial data from the debugger
data = client_file.readline()
initial_data = json.loads(data.decode())
@@ -413,7 +424,7 @@ def test_breakpoints(self):
"""Test setting and hitting breakpoints."""
self._create_script()
process, client_file = self._connect_and_get_client_file()
- with process:
+ with kill_on_error(process):
# Skip initial messages until we get to the prompt
self._read_until_prompt(client_file)
@@ -489,8 +500,7 @@ def bar():
self._create_script(script=script)
process, client_file = self._connect_and_get_client_file()
- with process:
-
+ with kill_on_error(process):
# Skip initial messages until we get to the prompt
self._read_until_prompt(client_file)
@@ -520,7 +530,7 @@ def test_handle_eof(self):
self._create_script()
process, client_file = self._connect_and_get_client_file()
- with process:
+ with kill_on_error(process):
# Skip initial messages until we get to the prompt
self._read_until_prompt(client_file)
@@ -568,7 +578,7 @@ def run_test():
self._create_script(script=script)
process, client_file = self._connect_and_get_client_file()
- with process:
+ with kill_on_error(process):
# First message should be an error about protocol version mismatch
data = client_file.readline()
message = json.loads(data.decode())
@@ -591,7 +601,7 @@ def test_help_system(self):
self._create_script()
process, client_file = self._connect_and_get_client_file()
- with process:
+ with kill_on_error(process):
# Skip initial messages until we get to the prompt
self._read_until_prompt(client_file)
@@ -630,7 +640,7 @@ def test_multi_line_commands(self):
self._create_script()
process, client_file = self._connect_and_get_client_file()
- with process:
+ with kill_on_error(process):
# Skip initial messages until we get to the prompt
self._read_until_prompt(client_file)
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]