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'