]> granicus.if.org Git - python/commitdiff
bpo-34037: test_asyncio uses shutdown_default_executor() (GH-16284)
authorVictor Stinner <vstinner@redhat.com>
Thu, 19 Sep 2019 14:45:06 +0000 (16:45 +0200)
committerGitHub <noreply@github.com>
Thu, 19 Sep 2019 14:45:06 +0000 (16:45 +0200)
Lib/test/test_asyncio/test_base_events.py
Lib/test/test_asyncio/test_tasks.py
Lib/test/test_asyncio/utils.py

index ccdd3bae73367920f64d2ef5dee89e857b176134..66191d9d1c1ad736f7f21a593b64d86999dcae06 100644 (file)
@@ -216,6 +216,9 @@ class BaseEventLoopTests(test_utils.TestCase):
                 raise NotImplementedError(
                     'cannot submit into a dummy executor')
 
+        self.loop._process_events = mock.Mock()
+        self.loop._write_to_self = mock.Mock()
+
         executor = DummyExecutor()
         self.loop.set_default_executor(executor)
         self.assertIs(executor, self.loop._default_executor)
@@ -226,6 +229,9 @@ class BaseEventLoopTests(test_utils.TestCase):
         with self.assertWarns(DeprecationWarning):
             self.loop.set_default_executor(executor)
 
+        # Avoid cleaning up the executor mock
+        self.loop._default_executor = None
+
     def test_call_soon(self):
         def cb():
             pass
index 6e832eab6d583588f2a3e4d6220627d47d5bbac9..576714faa8884bb5b4ee9ff44991d310c967097d 100644 (file)
@@ -3232,6 +3232,8 @@ class RunCoroutineThreadsafeTests(test_utils.TestCase):
         self.loop.set_exception_handler(callback)
 
         # Set corrupted task factory
+        self.addCleanup(self.loop.set_task_factory,
+                        self.loop.get_task_factory())
         self.loop.set_task_factory(task_factory)
 
         # Run event loop
index 5b4bb123a9ec45e6d99ea9722b3a42ebd218cf3c..ea608f4a10c7f7c744f68be12bd4d05bb2b0ce87 100644 (file)
@@ -509,9 +509,11 @@ def get_function_source(func):
 class TestCase(unittest.TestCase):
     @staticmethod
     def close_loop(loop):
-        executor = loop._default_executor
-        if executor is not None:
-            executor.shutdown(wait=True)
+        if loop._default_executor is not None:
+            if not loop.is_closed():
+                loop.run_until_complete(loop.shutdown_default_executor())
+            else:
+                loop._default_executor.shutdown(wait=True)
         loop.close()
         policy = support.maybe_get_event_loop_policy()
         if policy is not None: