Commit b4b90410 authored by Guido van Rossum's avatar Guido van Rossum

asyncio: Avoid ResourceWarning. Fix issue 19580 by Vajrasky Kok.

parent d7198f43
...@@ -458,16 +458,26 @@ class BaseEventLoopWithSelectorTests(unittest.TestCase): ...@@ -458,16 +458,26 @@ class BaseEventLoopWithSelectorTests(unittest.TestCase):
self.loop.sock_connect.return_value = () self.loop.sock_connect.return_value = ()
self.loop._make_ssl_transport = unittest.mock.Mock() self.loop._make_ssl_transport = unittest.mock.Mock()
class _SelectorTransportMock:
_sock = None
def close(self):
self._sock.close()
def mock_make_ssl_transport(sock, protocol, sslcontext, waiter, def mock_make_ssl_transport(sock, protocol, sslcontext, waiter,
**kwds): **kwds):
waiter.set_result(None) waiter.set_result(None)
transport = _SelectorTransportMock()
transport._sock = sock
return transport
self.loop._make_ssl_transport.side_effect = mock_make_ssl_transport self.loop._make_ssl_transport.side_effect = mock_make_ssl_transport
ANY = unittest.mock.ANY ANY = unittest.mock.ANY
# First try the default server_hostname. # First try the default server_hostname.
self.loop._make_ssl_transport.reset_mock() self.loop._make_ssl_transport.reset_mock()
coro = self.loop.create_connection(MyProto, 'python.org', 80, ssl=True) coro = self.loop.create_connection(MyProto, 'python.org', 80, ssl=True)
self.loop.run_until_complete(coro) transport, _ = self.loop.run_until_complete(coro)
transport.close()
self.loop._make_ssl_transport.assert_called_with( self.loop._make_ssl_transport.assert_called_with(
ANY, ANY, ANY, ANY, ANY, ANY, ANY, ANY,
server_side=False, server_side=False,
...@@ -476,7 +486,8 @@ class BaseEventLoopWithSelectorTests(unittest.TestCase): ...@@ -476,7 +486,8 @@ class BaseEventLoopWithSelectorTests(unittest.TestCase):
self.loop._make_ssl_transport.reset_mock() self.loop._make_ssl_transport.reset_mock()
coro = self.loop.create_connection(MyProto, 'python.org', 80, ssl=True, coro = self.loop.create_connection(MyProto, 'python.org', 80, ssl=True,
server_hostname='perl.com') server_hostname='perl.com')
self.loop.run_until_complete(coro) transport, _ = self.loop.run_until_complete(coro)
transport.close()
self.loop._make_ssl_transport.assert_called_with( self.loop._make_ssl_transport.assert_called_with(
ANY, ANY, ANY, ANY, ANY, ANY, ANY, ANY,
server_side=False, server_side=False,
...@@ -485,7 +496,8 @@ class BaseEventLoopWithSelectorTests(unittest.TestCase): ...@@ -485,7 +496,8 @@ class BaseEventLoopWithSelectorTests(unittest.TestCase):
self.loop._make_ssl_transport.reset_mock() self.loop._make_ssl_transport.reset_mock()
coro = self.loop.create_connection(MyProto, 'python.org', 80, ssl=True, coro = self.loop.create_connection(MyProto, 'python.org', 80, ssl=True,
server_hostname='') server_hostname='')
self.loop.run_until_complete(coro) transport, _ = self.loop.run_until_complete(coro)
transport.close()
self.loop._make_ssl_transport.assert_called_with(ANY, ANY, ANY, ANY, self.loop._make_ssl_transport.assert_called_with(ANY, ANY, ANY, ANY,
server_side=False, server_side=False,
server_hostname='') server_hostname='')
...@@ -505,8 +517,10 @@ class BaseEventLoopWithSelectorTests(unittest.TestCase): ...@@ -505,8 +517,10 @@ class BaseEventLoopWithSelectorTests(unittest.TestCase):
self.assertRaises(ValueError, self.loop.run_until_complete, coro) self.assertRaises(ValueError, self.loop.run_until_complete, coro)
coro = self.loop.create_connection(MyProto, None, 80, ssl=True) coro = self.loop.create_connection(MyProto, None, 80, ssl=True)
self.assertRaises(ValueError, self.loop.run_until_complete, coro) self.assertRaises(ValueError, self.loop.run_until_complete, coro)
sock = socket.socket()
coro = self.loop.create_connection(MyProto, None, None, coro = self.loop.create_connection(MyProto, None, None,
ssl=True, sock=socket.socket()) ssl=True, sock=sock)
self.addCleanup(sock.close)
self.assertRaises(ValueError, self.loop.run_until_complete, coro) self.assertRaises(ValueError, self.loop.run_until_complete, coro)
def test_create_server_empty_host(self): def test_create_server_empty_host(self):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment