summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-09-12 21:18:23 (GMT)
committerGitHub <noreply@github.com>2017-09-12 21:18:23 (GMT)
commit5013a5ebc9978a58435036fa3860c465882c21da (patch)
tree17b3b2cbacb5195305891cf79b9adcbc8c9e0ca5 /Lib/test
parent4d7807ab9ad9f990e948d250bbb390b23a790764 (diff)
downloadcpython-5013a5ebc9978a58435036fa3860c465882c21da.zip
cpython-5013a5ebc9978a58435036fa3860c465882c21da.tar.gz
cpython-5013a5ebc9978a58435036fa3860c465882c21da.tar.bz2
[3.6] bpo-31250: test_asyncio: fix dangling threads (#3517)
* bpo-31250, test_asyncio: fix dangling threads (#3252) * Explicitly call shutdown(wait=True) on executors to wait until all threads complete to prevent side effects between tests. * Fix test_loop_self_reading_exception(): don't mock loop.close(). Previously, the original close() method was called rather than the mock, because how set_event_loop() registered loop.close(). (cherry picked from commit 16432beadb8eba079c9786cc0c0eaacfd9fd2f7b) * bpo-31250, test_asyncio: fix EventLoopTestsMixin.tearDown() (#3264) Call doCleanups() to close the loop after calling executor.shutdown(wait=True): see TestCase.set_event_loop() of asyncio.test_utils. Replace also gc.collect() with support.gc_collect(). (cherry picked from commit e8a533fbc734af6eeb389202ba6c6e9c2548027f)
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_asyncio/test_events.py4
-rw-r--r--Lib/test/test_asyncio/test_futures.py2
-rw-r--r--Lib/test/test_asyncio/test_proactor_events.py1
3 files changed, 4 insertions, 3 deletions
diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py
index 9746678..27781a2 100644
--- a/Lib/test/test_asyncio/test_events.py
+++ b/Lib/test/test_asyncio/test_events.py
@@ -258,8 +258,8 @@ class EventLoopTestsMixin:
if not self.loop.is_closed():
test_utils.run_briefly(self.loop)
- self.loop.close()
- gc.collect()
+ self.doCleanups()
+ support.gc_collect()
super().tearDown()
def test_run_until_complete_nesting(self):
diff --git a/Lib/test/test_asyncio/test_futures.py b/Lib/test/test_asyncio/test_futures.py
index a06059d..4320a90 100644
--- a/Lib/test/test_asyncio/test_futures.py
+++ b/Lib/test/test_asyncio/test_futures.py
@@ -413,6 +413,7 @@ class BaseFutureTests:
self.assertTrue(asyncio.isfuture(f2))
self.assertEqual(res, 'oi')
self.assertNotEqual(ident, threading.get_ident())
+ ex.shutdown(wait=True)
def test_wrap_future_future(self):
f1 = self._new_future(loop=self.loop)
@@ -428,6 +429,7 @@ class BaseFutureTests:
f1 = ex.submit(run, 'oi')
f2 = asyncio.wrap_future(f1)
self.assertIs(self.loop, f2._loop)
+ ex.shutdown(wait=True)
def test_wrap_future_cancel(self):
f1 = concurrent.futures.Future()
diff --git a/Lib/test/test_asyncio/test_proactor_events.py b/Lib/test/test_asyncio/test_proactor_events.py
index 4dfc612..d76da66 100644
--- a/Lib/test/test_asyncio/test_proactor_events.py
+++ b/Lib/test/test_asyncio/test_proactor_events.py
@@ -529,7 +529,6 @@ class BaseProactorEventLoopTests(test_utils.TestCase):
self.loop._loop_self_reading)
def test_loop_self_reading_exception(self):
- self.loop.close = mock.Mock()
self.loop.call_exception_handler = mock.Mock()
self.proactor.recv.side_effect = OSError()
self.loop._loop_self_reading()