]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] gh-152132: Close stderr_copy in test_api.test_run (GH-153591) (#153596)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 11 Jul 2026 22:21:06 +0000 (00:21 +0200)
committerGitHub <noreply@github.com>
Sat, 11 Jul 2026 22:21:06 +0000 (22:21 +0000)
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 <vstinner@python.org>
Lib/test/test_capi/test_run.py

index 14f9833f63a4fb8cf0e7e2b95d7c4f4e1077887a..7796c589b557c729e9070a1acb15304d40f55e81 100644 (file)
@@ -310,13 +310,15 @@ class CAPITest(unittest.TestCase):
             # 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()