]> granicus.if.org Git - python/commitdiff
asyncio: Fix _SelectorTransport.__repr__() if the event loop is closed
authorVictor Stinner <victor.stinner@gmail.com>
Fri, 27 Mar 2015 14:20:08 +0000 (15:20 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Fri, 27 Mar 2015 14:20:08 +0000 (15:20 +0100)
Lib/asyncio/selector_events.py
Lib/test/test_asyncio/test_selector_events.py

index a38ed1cee3ba1fec73411e101412019e6b212cd0..68e9415e6a923ed725b22096afd9057d7798d8f5 100644 (file)
@@ -535,7 +535,7 @@ class _SelectorTransport(transports._FlowControlMixin,
             info.append('closing')
         info.append('fd=%s' % self._sock_fd)
         # test if the transport was closed
-        if self._loop is not None:
+        if self._loop is not None and not self._loop.is_closed():
             polling = _test_selector_event(self._loop._selector,
                                            self._sock_fd, selectors.EVENT_READ)
             if polling:
index f64e40dafcd51c0811b4e1e5d2f9a188d36ec822..9478b954835dab3bec82d18bce3a5eb05b65ff3b 100644 (file)
@@ -62,6 +62,11 @@ class BaseSelectorEventLoopTests(test_utils.TestCase):
         self.loop.add_reader._is_coroutine = False
         transport = self.loop._make_socket_transport(m, asyncio.Protocol())
         self.assertIsInstance(transport, _SelectorSocketTransport)
+
+        # Calling repr() must not fail when the event loop is closed
+        self.loop.close()
+        repr(transport)
+
         close_transport(transport)
 
     @unittest.skipIf(ssl is None, 'No ssl module')