[Python-checkins] bpo-31234: Join threads in tests (#3572)

Victor Stinner webhook-mailer at python.org
Thu Sep 14 11:43:10 EDT 2017


https://github.com/python/cpython/commit/18e95b4176256f100429a806d0455406df98f984
commit: 18e95b4176256f100429a806d0455406df98f984
branch: master
author: Victor Stinner <victor.stinner at gmail.com>
committer: GitHub <noreply at github.com>
date: 2017-09-14T08:43:04-07:00
summary:

bpo-31234: Join threads in tests (#3572)

Call thread.join() on threads to prevent the "dangling threads"
warning.

files:
M Lib/test/test_concurrent_futures.py
M Lib/test/test_decimal.py
M Lib/test/test_smtplib.py
M Lib/test/test_xmlrpc.py

diff --git a/Lib/test/test_concurrent_futures.py b/Lib/test/test_concurrent_futures.py
index 7bc733efb1e..57dc994d284 100644
--- a/Lib/test/test_concurrent_futures.py
+++ b/Lib/test/test_concurrent_futures.py
@@ -772,6 +772,7 @@ def notification():
         t.start()
 
         self.assertEqual(f1.result(timeout=5), 42)
+        t.join()
 
     def test_result_with_cancel(self):
         # TODO(brian at sweetapp.com): This test is timing dependent.
@@ -785,6 +786,7 @@ def notification():
         t.start()
 
         self.assertRaises(futures.CancelledError, f1.result, timeout=5)
+        t.join()
 
     def test_exception_with_timeout(self):
         self.assertRaises(futures.TimeoutError,
@@ -813,6 +815,7 @@ def notification():
         t.start()
 
         self.assertTrue(isinstance(f1.exception(timeout=5), OSError))
+        t.join()
 
 @test.support.reap_threads
 def test_main():
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 5d9da0e3745..5aea51e8b73 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -1618,6 +1618,9 @@ def test_threading(self):
         for sig in Signals[self.decimal]:
             self.assertFalse(DefaultContext.flags[sig])
 
+        th1.join()
+        th2.join()
+
         DefaultContext.prec = save_prec
         DefaultContext.Emax = save_emax
         DefaultContext.Emin = save_emin
diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py
index 4c9b7d367c8..040ad4e0596 100644
--- a/Lib/test/test_smtplib.py
+++ b/Lib/test/test_smtplib.py
@@ -611,7 +611,9 @@ def setUp(self):
         self.sock.settimeout(15)
         self.port = support.bind_port(self.sock)
         servargs = (self.evt, self.respdata, self.sock)
-        threading.Thread(target=server, args=servargs).start()
+        thread = threading.Thread(target=server, args=servargs)
+        thread.start()
+        self.addCleanup(thread.join)
         self.evt.wait()
         self.evt.clear()
 
diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
index f2b496ac9a6..c9099e05117 100644
--- a/Lib/test/test_xmlrpc.py
+++ b/Lib/test/test_xmlrpc.py
@@ -755,7 +755,9 @@ def setUp(self):
         self.evt = threading.Event()
         # start server thread to handle requests
         serv_args = (self.evt, self.request_count, self.requestHandler)
-        threading.Thread(target=self.threadFunc, args=serv_args).start()
+        thread = threading.Thread(target=self.threadFunc, args=serv_args)
+        thread.start()
+        self.addCleanup(thread.join)
 
         # wait for the server to be ready
         self.evt.wait()
@@ -1206,7 +1208,9 @@ def setUp(self):
         self.evt = threading.Event()
         # start server thread to handle requests
         serv_args = (self.evt, 1)
-        threading.Thread(target=http_server, args=serv_args).start()
+        thread = threading.Thread(target=http_server, args=serv_args)
+        thread.start()
+        self.addCleanup(thread.join)
 
         # wait for the server to be ready
         self.evt.wait()



More information about the Python-checkins mailing list