]> granicus.if.org Git - python/commitdiff
Issue #23243: Close explicitly event loops in asyncio tests
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 15 Jan 2015 12:17:34 +0000 (13:17 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 15 Jan 2015 12:17:34 +0000 (13:17 +0100)
Lib/test/test_asyncio/test_base_events.py
Lib/test/test_asyncio/test_proactor_events.py
Lib/test/test_asyncio/test_selector_events.py

index bd6c0d8001024e8012cbdf3615f318fe9541c5e7..9e7c50cc1713d257318e6a7497b899677e086f39 100644 (file)
@@ -590,6 +590,7 @@ class BaseEventLoopTests(test_utils.TestCase):
                 raise ValueError('spam')
 
         loop = Loop()
+        self.addCleanup(loop.close)
         asyncio.set_event_loop(loop)
 
         def run_loop():
index 825823834ae7f774aff8e3ee48999d1af70817c4..08c622a836d4a50a288b30ff27e1f5aa342948d5 100644 (file)
@@ -16,6 +16,7 @@ class ProactorSocketTransportTests(test_utils.TestCase):
 
     def setUp(self):
         self.loop = self.new_test_loop()
+        self.addCleanup(self.loop.close)
         self.proactor = mock.Mock()
         self.loop._proactor = self.proactor
         self.protocol = test_utils.make_test_protocol(asyncio.Protocol)
@@ -459,6 +460,9 @@ class BaseProactorEventLoopTests(test_utils.TestCase):
         self.assertIsNone(self.loop._ssock)
         self.assertIsNone(self.loop._csock)
 
+        # Don't call close(): _close_self_pipe() cannot be called twice
+        self.loop._closed = True
+
     def test_close(self):
         self.loop._close_self_pipe = mock.Mock()
         self.loop.close()
index 3e8392e77bd185bc4736cf51212378ede05f8b8b..f5194193948dd183b5baa88dae94174bf44ddca1 100644 (file)
@@ -24,6 +24,11 @@ MOCK_ANY = mock.ANY
 
 class TestBaseSelectorEventLoop(BaseSelectorEventLoop):
 
+    def close(self):
+        # Don't call the close() method of the parent class, because the
+        # selector is mocked
+        self._closed = True
+
     def _make_self_pipe(self):
         self._ssock = mock.Mock()
         self._csock = mock.Mock()
@@ -40,7 +45,7 @@ class BaseSelectorEventLoopTests(test_utils.TestCase):
         self.selector = mock.Mock()
         self.selector.select.return_value = []
         self.loop = TestBaseSelectorEventLoop(self.selector)
-        self.set_event_loop(self.loop, cleanup=False)
+        self.set_event_loop(self.loop)
 
     def test_make_socket_transport(self):
         m = mock.Mock()
@@ -76,6 +81,15 @@ class BaseSelectorEventLoopTests(test_utils.TestCase):
             self.loop._make_ssl_transport(m, m, m, m)
 
     def test_close(self):
+        class EventLoop(BaseSelectorEventLoop):
+            def _make_self_pipe(self):
+                self._ssock = mock.Mock()
+                self._csock = mock.Mock()
+                self._internal_fds += 1
+
+        self.loop = EventLoop(self.selector)
+        self.set_event_loop(self.loop)
+
         ssock = self.loop._ssock
         ssock.fileno.return_value = 7
         csock = self.loop._csock