summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2015-07-13 17:33:39 +0200
committerVictor Stinner <vstinner@redhat.com>2015-07-13 17:44:53 +0200
commit242222facef6af710d55a7d108be23c32b58c8ac (patch)
tree1e33208cf2e30f34a6f2c58743d6d0ca43d03d89
parent14bdbc05ee70cf89091685561dfcbd64740454e7 (diff)
downloadtrollius-git-242222facef6af710d55a7d108be23c32b58c8ac.tar.gz
Fix sslproto when ssl is not available
-rw-r--r--TODO.rst1
-rw-r--r--tests/test_events.py9
-rw-r--r--trollius/selector_events.py2
-rw-r--r--trollius/sslproto.py11
4 files changed, 15 insertions, 8 deletions
diff --git a/TODO.rst b/TODO.rst
index 260b491..4a433c2 100644
--- a/TODO.rst
+++ b/TODO.rst
@@ -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):