diff options
author | Victor Stinner <vstinner@redhat.com> | 2015-07-13 17:33:39 +0200 |
---|---|---|
committer | Victor Stinner <vstinner@redhat.com> | 2015-07-13 17:44:53 +0200 |
commit | 242222facef6af710d55a7d108be23c32b58c8ac (patch) | |
tree | 1e33208cf2e30f34a6f2c58743d6d0ca43d03d89 | |
parent | 14bdbc05ee70cf89091685561dfcbd64740454e7 (diff) | |
download | trollius-git-242222facef6af710d55a7d108be23c32b58c8ac.tar.gz |
Fix sslproto when ssl is not available
-rw-r--r-- | TODO.rst | 1 | ||||
-rw-r--r-- | tests/test_events.py | 9 | ||||
-rw-r--r-- | trollius/selector_events.py | 2 | ||||
-rw-r--r-- | trollius/sslproto.py | 11 |
4 files changed, 15 insertions, 8 deletions
@@ -1,6 +1,7 @@ Unsorted "TODO" tasks: * Drop Python 2.6 and 3.2 support +* Drop platform without ssl module? * test_utils.py: remove assertRaisesRegex, assertRegex * streams.py:FIXME: should we support __aiter__ and __anext__ in Trollius? * reuse selectors backport from PyPI diff --git a/tests/test_events.py b/tests/test_events.py index c8e9605..af7113b 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -64,6 +64,11 @@ def osx_tiger(): return version < (10, 5) +def skip_if_backported_sslcontext(): + backported = getattr(asyncio, 'BACKPORT_SSL_CONTEXT', False) + return unittest.skipIf(backported, 'need ssl.SSLContext') + + ONLYCERT = data_file('ssl_cert.pem') ONLYKEY = data_file('ssl_key.pem') SIGNED_CERTFILE = data_file('keycert3.pem') @@ -894,7 +899,7 @@ class EventLoopTestsMixin(object): self.test_create_unix_server_ssl() @unittest.skipIf(ssl is None, 'No ssl module') - @unittest.skipIf(asyncio.BACKPORT_SSL_CONTEXT, 'need ssl.SSLContext') + @skip_if_backported_sslcontext() def test_create_server_ssl_verify_failed(self): proto = MyProto(loop=self.loop) server, host, port = self._make_ssl_server( @@ -928,7 +933,7 @@ class EventLoopTestsMixin(object): @unittest.skipIf(ssl is None, 'No ssl module') @unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'No UNIX Sockets') - @unittest.skipIf(asyncio.BACKPORT_SSL_CONTEXT, 'need ssl.SSLContext') + @skip_if_backported_sslcontext() def test_create_unix_server_ssl_verify_failed(self): proto = MyProto(loop=self.loop) server, path = self._make_ssl_unix_server( diff --git a/trollius/selector_events.py b/trollius/selector_events.py index 4eb4bc5..dc27ed1 100644 --- a/trollius/selector_events.py +++ b/trollius/selector_events.py @@ -23,8 +23,8 @@ from . import constants from . import events from . import futures from . import selectors -from . import transports from . import sslproto +from . import transports from .compat import flatten_bytes from .coroutines import coroutine, From from .log import logger diff --git a/trollius/sslproto.py b/trollius/sslproto.py index 2da1082..707cc6d 100644 --- a/trollius/sslproto.py +++ b/trollius/sslproto.py @@ -3,6 +3,7 @@ import sys import warnings try: import ssl + from .py3_ssl import BACKPORT_SSL_CONTEXT except ImportError: # pragma: no cover ssl = None @@ -10,7 +11,6 @@ from . import protocols from . import transports from .log import logger from .py33_exceptions import BrokenPipeError, ConnectionResetError -from .py3_ssl import BACKPORT_SSL_CONTEXT def _create_transport_context(server_side, server_hostname): @@ -46,10 +46,11 @@ _DO_HANDSHAKE = "DO_HANDSHAKE" _WRAPPED = "WRAPPED" _SHUTDOWN = "SHUTDOWN" -if hasattr(ssl, 'CertificateError'): - _SSL_ERRORS = (ssl.SSLError, ssl.CertificateError) -else: - _SSL_ERRORS = ssl.SSLError +if ssl is not None: + if hasattr(ssl, 'CertificateError'): + _SSL_ERRORS = (ssl.SSLError, ssl.CertificateError) + else: + _SSL_ERRORS = ssl.SSLError class _SSLPipe(object): |