From 3fdd4902a1cfac9c1cf831acca7b1936dad1f3df Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sat, 11 Jul 2026 23:55:02 +0200 Subject: [PATCH] gh-152132: Close stderr_copy in test_api.test_run (GH-153591) Previously, the test was leaking a file descriptor. (cherry picked from commit 0023d5b23df09f18425fea9b9c54a37ba050d5cf) Co-authored-by: Victor Stinner --- Lib/test/test_capi/test_run.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Lib/test/test_capi/test_run.py b/Lib/test/test_capi/test_run.py index 14f9833f63a4fb..7796c589b557c7 100644 --- a/Lib/test/test_capi/test_run.py +++ b/Lib/test/test_capi/test_run.py @@ -310,13 +310,15 @@ def check_run_interactive(self, run, encode_filename, use_loop=False): # supported". In this case, run the test without redirecting # stderr to a temporary file. self._check_run_interactive(run, encode_filename, use_loop) - else: - with tempfile.TemporaryFile() as tmp: - try: - os.dup2(tmp.fileno(), STDERR_FD) - self._check_run_interactive(run, encode_filename, use_loop) - finally: - os.dup2(stderr_copy, STDERR_FD) + return + + with tempfile.TemporaryFile() as tmp: + try: + os.dup2(tmp.fileno(), STDERR_FD) + self._check_run_interactive(run, encode_filename, use_loop) + finally: + os.dup2(stderr_copy, STDERR_FD) + os.close(stderr_copy) def test_run_interactiveone(self): # Test PyRun_InteractiveOne()