From 80206a5d95373abe0f8d3d3669b69798de785e62 Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Tue, 28 Nov 2023 12:12:47 -0700 Subject: [PATCH] Close file descriptors in tests. --- Lib/test/test_interpreters.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/Lib/test/test_interpreters.py b/Lib/test/test_interpreters.py index cc4f4003b0359d..2b0cff596da00e 100644 --- a/Lib/test/test_interpreters.py +++ b/Lib/test/test_interpreters.py @@ -68,6 +68,20 @@ def run(): class TestBase(unittest.TestCase): + def os_pipe(self): + r, w = os.pipe() + def cleanup(): + try: + os.close(w) + except Exception: + pass + try: + os.close(r) + except Exception: + pass + self.addCleanup(cleanup) + return r, w + def tearDown(self): clean_up_interpreters() @@ -262,7 +276,7 @@ def test_subinterpreter(self): self.assertFalse(interp.is_running()) def test_finished(self): - r, w = os.pipe() + r, w = self.os_pipe() interp = interpreters.create() interp.run(f"""if True: import os @@ -299,8 +313,8 @@ def test_bad_id(self): interp.is_running() def test_with_only_background_threads(self): - r_interp, w_interp = os.pipe() - r_thread, w_thread = os.pipe() + r_interp, w_interp = self.os_pipe() + r_thread, w_thread = self.os_pipe() DONE = b'D' FINISHED = b'F' @@ -425,8 +439,8 @@ def test_still_running(self): self.assertTrue(interp.is_running()) def test_subthreads_still_running(self): - r_interp, w_interp = os.pipe() - r_thread, w_thread = os.pipe() + r_interp, w_interp = self.os_pipe() + r_thread, w_thread = self.os_pipe() FINISHED = b'F' @@ -532,8 +546,8 @@ def test_bytes_for_script(self): interp.run(b'print("spam")') def test_with_background_threads_still_running(self): - r_interp, w_interp = os.pipe() - r_thread, w_thread = os.pipe() + r_interp, w_interp = self.os_pipe() + r_thread, w_thread = self.os_pipe() RAN = b'R' DONE = b'D' pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy