diff options
| author | Victor Stinner <victor.stinner@gmail.com> | 2015-01-29 02:52:57 +0100 |
|---|---|---|
| committer | Victor Stinner <victor.stinner@gmail.com> | 2015-01-29 02:52:57 +0100 |
| commit | 7a46edabd8a2aa665c211cd53d36fa45b4ca856c (patch) | |
| tree | de38f996d29d8ce285847f25dbb9f777fcb5c634 /tests | |
| parent | 1162bf22e62544d5fdc3057ba23d2fc0fc244d07 (diff) | |
| download | trollius-git-7a46edabd8a2aa665c211cd53d36fa45b4ca856c.tar.gz | |
Fix _SelectorSslTransport.close()
Don't call protocol.connection_lost() if protocol.connection_made() was not
called yet: if the SSL handshake failed or is still in progress.
The close() method can be called if the creation of the connection is
cancelled, by a timeout for example.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_selector_events.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/test_selector_events.py b/tests/test_selector_events.py index 5152616..f64e40d 100644 --- a/tests/test_selector_events.py +++ b/tests/test_selector_events.py @@ -1427,7 +1427,7 @@ class SelectorSslTransportTests(test_utils.TestCase): self.assertFalse(tr.can_write_eof()) self.assertRaises(NotImplementedError, tr.write_eof) - def test_close(self): + def check_close(self): tr = self._make_one() tr.close() @@ -1439,6 +1439,19 @@ class SelectorSslTransportTests(test_utils.TestCase): self.assertEqual(tr._conn_lost, 1) self.assertEqual(1, self.loop.remove_reader_count[1]) + test_utils.run_briefly(self.loop) + + def test_close(self): + self.check_close() + self.assertTrue(self.protocol.connection_made.called) + self.assertTrue(self.protocol.connection_lost.called) + + def test_close_not_connected(self): + self.sslsock.do_handshake.side_effect = ssl.SSLWantReadError + self.check_close() + self.assertFalse(self.protocol.connection_made.called) + self.assertFalse(self.protocol.connection_lost.called) + @unittest.skipIf(ssl is None, 'No SSL support') def test_server_hostname(self): self.ssl_transport(server_hostname='localhost') |
