bpo-31234: fork_wait tests now join threads (#3139) (#3535)
fork_wait.py tests now joins threads, to not leak running threads in
the background.
(cherry picked from commit c99d41f9c0304fcf06550515c3db55f93a629e9e)
diff --git a/Lib/test/fork_wait.py b/Lib/test/fork_wait.py
index 2646cbd..b900463 100644
--- a/Lib/test/fork_wait.py
+++ b/Lib/test/fork_wait.py
@@ -13,8 +13,9 @@
"""
import os, sys, time, unittest
-import test.test_support as test_support
-thread = test_support.import_module('thread')
+import test.support as support
+
+threading = support.import_module('threading')
LONGSLEEP = 2
SHORTSLEEP = 0.5
@@ -23,8 +24,19 @@
class ForkWait(unittest.TestCase):
def setUp(self):
+ self._threading_key = support.threading_setup()
self.alive = {}
self.stop = 0
+ self.threads = []
+
+ def tearDown(self):
+ # Stop threads
+ self.stop = 1
+ for thread in self.threads:
+ thread.join()
+ thread = None
+ del self.threads[:]
+ support.threading_cleanup(*self._threading_key)
def f(self, id):
while not self.stop:
@@ -48,7 +60,9 @@
def test_wait(self):
for i in range(NUM_THREADS):
- thread.start_new(self.f, (i,))
+ thread = threading.Thread(target=self.f, args=(i,))
+ thread.start()
+ self.threads.append(thread)
time.sleep(LONGSLEEP)
@@ -74,6 +88,3 @@
else:
# Parent
self.wait_impl(cpid)
- # Tell threads to die
- self.stop = 1
- time.sleep(2*SHORTSLEEP) # Wait for threads to die