Skip SSL tests if SSL is not available

This is particularly useful to not require the external OpenSSL module
in order to run the tests on python2.5.
This commit is contained in:
Floris Bruynooghe
2012-09-05 00:49:20 +01:00
parent 3003d941d7
commit 2fc5857c8a
6 changed files with 31 additions and 4 deletions

View File

@@ -110,6 +110,17 @@ def skip_if_no_itimer(func):
return skip_unless(has_itimer)(func) return skip_unless(has_itimer)(func)
def skip_if_no_ssl(func):
""" Decorator that skips a test if SSL is not available."""
try:
import eventlet.green.ssl
except ImportError:
try:
import eventlet.green.OpenSSL
except ImportError:
skipped(func)
class TestIsTakingTooLong(Exception): class TestIsTakingTooLong(Exception):
""" Custom exception class to be raised when a test's runtime exceeds a limit. """ """ Custom exception class to be raised when a test's runtime exceeds a limit. """
pass pass

View File

@@ -10,6 +10,9 @@ from eventlet import api
warnings.simplefilter('default', DeprecationWarning) warnings.simplefilter('default', DeprecationWarning)
from eventlet import greenio, util, hubs, greenthread, spawn from eventlet import greenio, util, hubs, greenthread, spawn
from tests import skip_if_no_ssl
def check_hub(): def check_hub():
# Clear through the descriptor queue # Clear through the descriptor queue
api.sleep(0) api.sleep(0)
@@ -60,6 +63,7 @@ class TestApi(TestCase):
check_hub() check_hub()
@skip_if_no_ssl
def test_connect_ssl(self): def test_connect_ssl(self):
def accept_once(listenfd): def accept_once(listenfd):
try: try:

View File

@@ -3,7 +3,7 @@ import os
import eventlet import eventlet
from eventlet import event from eventlet import event
from eventlet.green import socket from eventlet.green import socket
from tests import LimitedTestCase, s2b from tests import LimitedTestCase, s2b, skip_if_no_ssl
certificate_file = os.path.join(os.path.dirname(__file__), 'test_server.crt') certificate_file = os.path.join(os.path.dirname(__file__), 'test_server.crt')
private_key_file = os.path.join(os.path.dirname(__file__), 'test_server.key') private_key_file = os.path.join(os.path.dirname(__file__), 'test_server.key')
@@ -107,6 +107,7 @@ class TestServe(LimitedTestCase):
timeout_value="timed out") timeout_value="timed out")
self.assertEquals(x, "timed out") self.assertEquals(x, "timed out")
@skip_if_no_ssl
def test_wrap_ssl(self): def test_wrap_ssl(self):
server = eventlet.wrap_ssl(eventlet.listen(('localhost', 0)), server = eventlet.wrap_ssl(eventlet.listen(('localhost', 0)),
certfile=certificate_file, certfile=certificate_file,

View File

@@ -1,4 +1,5 @@
from tests import skipped, LimitedTestCase, skip_unless, certificate_file, private_key_file from tests import LimitedTestCase, certificate_file, private_key_file
from tests import skip_if_no_ssl
from unittest import main from unittest import main
import eventlet import eventlet
from eventlet import util, coros, greenio from eventlet import util, coros, greenio
@@ -15,6 +16,7 @@ def listen_ssl_socket(address=('127.0.0.1', 0)):
class SSLTest(LimitedTestCase): class SSLTest(LimitedTestCase):
@skip_if_no_ssl
def test_duplex_response(self): def test_duplex_response(self):
def serve(listener): def serve(listener):
sock, addr = listener.accept() sock, addr = listener.accept()
@@ -30,6 +32,7 @@ class SSLTest(LimitedTestCase):
self.assertEquals(client.read(8192), 'response') self.assertEquals(client.read(8192), 'response')
server_coro.wait() server_coro.wait()
@skip_if_no_ssl
def test_ssl_close(self): def test_ssl_close(self):
def serve(listener): def serve(listener):
sock, addr = listener.accept() sock, addr = listener.accept()
@@ -50,6 +53,7 @@ class SSLTest(LimitedTestCase):
client.close() client.close()
server_coro.wait() server_coro.wait()
@skip_if_no_ssl
def test_ssl_connect(self): def test_ssl_connect(self):
def serve(listener): def serve(listener):
sock, addr = listener.accept() sock, addr = listener.accept()
@@ -65,6 +69,7 @@ class SSLTest(LimitedTestCase):
ssl_client.close() ssl_client.close()
server_coro.wait() server_coro.wait()
@skip_if_no_ssl
def test_ssl_unwrap(self): def test_ssl_unwrap(self):
def serve(): def serve():
sock, addr = listener.accept() sock, addr = listener.accept()
@@ -89,7 +94,7 @@ class SSLTest(LimitedTestCase):
server_coro.wait() server_coro.wait()
class SocketSSLTest(LimitedTestCase): class SocketSSLTest(LimitedTestCase):
@skip_unless(hasattr(socket, 'ssl')) @skip_if_no_ssl
def test_greensslobject(self): def test_greensslobject(self):
import warnings import warnings
# disabling socket.ssl warnings because we're testing it here # disabling socket.ssl warnings because we're testing it here

View File

@@ -10,6 +10,7 @@ from eventlet import event
from eventlet import greenio from eventlet import greenio
from tests import mock, LimitedTestCase, certificate_file, private_key_file from tests import mock, LimitedTestCase, certificate_file, private_key_file
from tests import skip_if_no_ssl
from tests.wsgi_test import _TestBase from tests.wsgi_test import _TestBase
@@ -517,6 +518,7 @@ class TestWebSocketSSL(_TestBase):
def set_site(self): def set_site(self):
self.site = wsapp self.site = wsapp
@skip_if_no_ssl
def test_ssl_sending_messages(self): def test_ssl_sending_messages(self):
s = eventlet.wrap_ssl(eventlet.listen(('localhost', 0)), s = eventlet.wrap_ssl(eventlet.listen(('localhost', 0)),
certfile=certificate_file, certfile=certificate_file,

View File

@@ -5,7 +5,7 @@ import errno
import os import os
import socket import socket
import sys import sys
from tests import skipped, LimitedTestCase, skip_with_pyevent from tests import skipped, LimitedTestCase, skip_with_pyevent, skip_if_no_ssl
from unittest import main from unittest import main
from eventlet import greenio from eventlet import greenio
@@ -370,6 +370,7 @@ class TestHttpd(_TestBase):
# Require a CRLF to close the message body # Require a CRLF to close the message body
self.assertEqual(response, '\r\n') self.assertEqual(response, '\r\n')
@skip_if_no_ssl
def test_012_ssl_server(self): def test_012_ssl_server(self):
def wsgi_app(environ, start_response): def wsgi_app(environ, start_response):
start_response('200 OK', {}) start_response('200 OK', {})
@@ -390,6 +391,7 @@ class TestHttpd(_TestBase):
result = sock.read(8192) result = sock.read(8192)
self.assertEquals(result[-3:], 'abc') self.assertEquals(result[-3:], 'abc')
@skip_if_no_ssl
def test_013_empty_return(self): def test_013_empty_return(self):
def wsgi_app(environ, start_response): def wsgi_app(environ, start_response):
start_response("200 OK", []) start_response("200 OK", [])
@@ -487,6 +489,7 @@ class TestHttpd(_TestBase):
self.assertEquals(1, len([l for l in header_lines self.assertEquals(1, len([l for l in header_lines
if l.lower().startswith('content-length')])) if l.lower().startswith('content-length')]))
@skip_if_no_ssl
def test_017_ssl_zeroreturnerror(self): def test_017_ssl_zeroreturnerror(self):
def server(sock, site, log): def server(sock, site, log):
@@ -781,6 +784,7 @@ class TestHttpd(_TestBase):
fd.flush() fd.flush()
read_http(sock) read_http(sock)
@skip_if_no_ssl
def test_028_ssl_handshake_errors(self): def test_028_ssl_handshake_errors(self):
errored = [False] errored = [False]
def server(sock): def server(sock):