From 47e3511fd537696702a020c011f32792a507004a Mon Sep 17 00:00:00 2001 From: Pablo Galindo Date: Wed, 12 Jun 2024 13:30:50 +0100 Subject: [PATCH 1/2] gh-118908: Protect the REPL subprocess with a timeout in tests --- Lib/test/test_pyrepl/test_pyrepl.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_pyrepl/test_pyrepl.py b/Lib/test/test_pyrepl/test_pyrepl.py index 3167b8473bfe20..df1ffbd74e12e1 100644 --- a/Lib/test/test_pyrepl/test_pyrepl.py +++ b/Lib/test/test_pyrepl/test_pyrepl.py @@ -8,6 +8,7 @@ from unittest import TestCase, skipUnless from unittest.mock import patch from test.support import force_not_colorized +from test.support import SHORT_TIMEOUT from .support import ( FakeConsole, @@ -885,5 +886,10 @@ def run_repl(self, repl_input: str | list[str], env: dict | None = None) -> tupl os.close(master_fd) os.close(slave_fd) - exit_code = process.wait() + try: + exit_code = process.wait(timeout=SHORT_TIMEOUT) + except subprocess.TimeoutExpired: + process.terminate() + process.kill() + exit_code = process.returncode return "\n".join(output), exit_code From bc9bdc7da0df05d3e32ffe1307f191d4ec5c396a Mon Sep 17 00:00:00 2001 From: Pablo Galindo Salgado Date: Wed, 12 Jun 2024 19:08:24 +0100 Subject: [PATCH 2/2] Update Lib/test/test_pyrepl/test_pyrepl.py --- Lib/test/test_pyrepl/test_pyrepl.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Lib/test/test_pyrepl/test_pyrepl.py b/Lib/test/test_pyrepl/test_pyrepl.py index df1ffbd74e12e1..41ba5959a1ec34 100644 --- a/Lib/test/test_pyrepl/test_pyrepl.py +++ b/Lib/test/test_pyrepl/test_pyrepl.py @@ -889,7 +889,6 @@ def run_repl(self, repl_input: str | list[str], env: dict | None = None) -> tupl try: exit_code = process.wait(timeout=SHORT_TIMEOUT) except subprocess.TimeoutExpired: - process.terminate() process.kill() exit_code = process.returncode return "\n".join(output), exit_code