Skip to content

Commit

Permalink
unit test reorganization
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelgrinberg committed Jan 3, 2019
1 parent 919d8ea commit 3786502
Show file tree
Hide file tree
Showing 19 changed files with 41 additions and 82 deletions.
3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"""
import re
from setuptools import setup, find_packages
import six


with open('engineio/__init__.py', 'r') as f:
Expand Down Expand Up @@ -45,7 +46,7 @@
'mock',
'eventlet',
],
test_suite='tests',
test_suite='tests' if six.PY3 else 'tests.common',
classifiers=[
'Environment :: Web Environment',
'Intended Audience :: Developers',
Expand Down
Empty file added tests/asyncio/__init__.py
Empty file.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,14 @@

if sys.version_info >= (3, 5):
import asyncio
from asyncio import coroutine
from engineio.async_drivers import asgi as async_asgi


def AsyncMock(*args, **kwargs):
"""Return a mock asynchronous function."""
m = mock.MagicMock(*args, **kwargs)

@coroutine
def mock_coro(*args, **kwargs):
async def mock_coro(*args, **kwargs):
return m(*args, **kwargs)

mock_coro.mock = m
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import asyncio
import sys
import time
import unittest
Expand All @@ -17,26 +18,18 @@ class _dummy():
websockets.exceptions = _dummy()
websockets.exceptions.InvalidURI = _dummy()

from engineio import asyncio_client
from engineio import client
from engineio import exceptions
from engineio import packet
from engineio import payload
if sys.version_info >= (3, 5):
import asyncio
from asyncio import coroutine
from engineio import asyncio_client
else:
# mock coroutine so that Python 2 doesn't complain
def coroutine(f):
return f


def AsyncMock(*args, **kwargs):
"""Return a mock asynchronous function."""
m = mock.MagicMock(*args, **kwargs)

@coroutine
def mock_coro(*args, **kwargs):
async def mock_coro(*args, **kwargs):
return m(*args, **kwargs)

mock_coro.mock = m
Expand Down Expand Up @@ -130,8 +123,7 @@ def test_wait(self):
c = asyncio_client.AsyncClient()
done = []

@coroutine
def fake_read_look_task():
async def fake_read_look_task():
done.append(True)

c.read_loop_task = fake_read_look_task()
Expand All @@ -147,8 +139,7 @@ def test_send(self):
c = asyncio_client.AsyncClient()
saved_packets = []

@coroutine
def fake_send_packet(pkt):
async def fake_send_packet(pkt):
saved_packets.append(pkt)

c._send_packet = fake_send_packet
Expand Down Expand Up @@ -241,8 +232,7 @@ def test_disconnect_websocket_abort(self):
def test_background_tasks(self):
r = []

@coroutine
def foo(arg):
async def foo(arg):
r.append(arg)

c = asyncio_client.AsyncClient()
Expand Down Expand Up @@ -603,8 +593,7 @@ def foo_handler(arg):
def test_trigger_event_coroutine(self):
result = []

@coroutine
def foo_handler(arg):
async def foo_handler(arg):
result.append('ok')
result.append(arg)

Expand All @@ -627,12 +616,10 @@ def foo_handler(arg):
self.assertIsNone(_run(c._trigger_event('message', 'bar')))

def test_trigger_event_coroutine_error(self):
@coroutine
def connect_handler(arg):
async def connect_handler(arg):
return 1 / 0

@coroutine
def foo_handler(arg):
async def foo_handler(arg):
return 1 / 0

c = asyncio_client.AsyncClient()
Expand All @@ -657,8 +644,7 @@ def foo_handler(arg):
def test_trigger_event_coroutine_async(self):
result = []

@coroutine
def foo_handler(arg):
async def foo_handler(arg):
result.append('ok')
result.append(arg)

Expand Down Expand Up @@ -686,8 +672,7 @@ def foo_handler(arg):
def test_trigger_event_coroutine_async_error(self):
result = []

@coroutine
def foo_handler(arg):
async def foo_handler(arg):
result.append(arg)
return 1 / 0

Expand Down Expand Up @@ -721,8 +706,7 @@ def test_ping_loop_disconnect(self):
('disconnecting', True)
]

@coroutine
def fake_wait():
async def fake_wait():
c.state, c.pong_received = states.pop(0)

c.ping_loop_event.wait = fake_wait
Expand All @@ -742,8 +726,7 @@ def test_ping_loop_missing_pong(self):
('connected', False)
]

@coroutine
def fake_wait():
async def fake_wait():
c.state, c.pong_received = states.pop(0)

c.ping_loop_event.wait = fake_wait
Expand All @@ -765,8 +748,7 @@ def test_ping_loop_missing_pong_websocket(self):
('connected', False)
]

@coroutine
def fake_wait():
async def fake_wait():
c.state, c.pong_received = states.pop(0)

c.ping_loop_event.wait = fake_wait
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import asyncio
import gzip
import json
import logging
Expand All @@ -11,26 +12,18 @@
else:
import mock

from engineio import asyncio_server
from engineio.async_drivers import aiohttp as async_aiohttp
from engineio import exceptions
from engineio import packet
from engineio import payload
if sys.version_info >= (3, 5):
import asyncio
from asyncio import coroutine
from engineio import asyncio_server
from engineio.async_drivers import aiohttp as async_aiohttp
else:
# mock coroutine so that Python 2 doesn't complain
def coroutine(f):
return f


def AsyncMock(*args, **kwargs):
"""Return a mock asynchronous function."""
m = mock.MagicMock(*args, **kwargs)

@coroutine
def mock_coro(*args, **kwargs):
async def mock_coro(*args, **kwargs):
return m(*args, **kwargs)

mock_coro.mock = m
Expand Down Expand Up @@ -141,7 +134,7 @@ def test_attach(self, import_module):

def test_session(self):
s = asyncio_server.AsyncServer()
s.sockets['foo'] = mock_socket = self._get_mock_socket()
s.sockets['foo'] = self._get_mock_socket()

async def _func():
async with s.session('foo') as session:
Expand Down Expand Up @@ -366,8 +359,7 @@ def test_connect_transport_websocket_closed(self, import_module,

# this mock handler just closes the socket, as it would happen on a
# real websocket exchange
@coroutine
def mock_handle(environ):
async def mock_handle(environ):
s.sockets['123'].closed = True

AsyncSocket().handle_get_request = mock_handle
Expand Down Expand Up @@ -553,12 +545,11 @@ def test_get_request_closes_socket(self, import_module):
s = asyncio_server.AsyncServer()
s.sockets['foo'] = mock_socket = self._get_mock_socket()

@coroutine
def mock_get_request(*args, **kwargs):
async def mock_get_request(*args, **kwargs):
mock_socket.closed = True
return 'resp'

mock_socket.handle_get_request.mock.return_value = mock_get_request()
mock_socket.handle_get_request = mock_get_request
r = _run(s.handle_request('request'))
self.assertEqual(r, 'resp')
self.assertNotIn('foo', s.sockets)
Expand All @@ -571,11 +562,10 @@ def test_get_request_error(self, import_module):
s = asyncio_server.AsyncServer()
s.sockets['foo'] = mock_socket = self._get_mock_socket()

@coroutine
def mock_get_request(*args, **kwargs):
async def mock_get_request(*args, **kwargs):
raise exceptions.QueueEmpty()

mock_socket.handle_get_request.mock.return_value = mock_get_request()
mock_socket.handle_get_request = mock_get_request
_run(s.handle_request('request'))
self.assertEqual(a._async['make_response'].call_args[0][0],
'400 BAD REQUEST')
Expand All @@ -599,11 +589,10 @@ def test_post_request_error(self, import_module):
s = asyncio_server.AsyncServer()
s.sockets['foo'] = mock_socket = self._get_mock_socket()

@coroutine
def mock_post_request(*args, **kwargs):
async def mock_post_request(*args, **kwargs):
raise exceptions.ContentTooLongError()

mock_socket.handle_post_request.mock.return_value = mock_post_request()
mock_socket.handle_post_request = mock_post_request
_run(s.handle_request('request'))
self.assertEqual(a._async['make_response'].call_args[0][0],
'400 BAD REQUEST')
Expand Down Expand Up @@ -773,8 +762,7 @@ def loads(*args, **kwargs):
def test_background_tasks(self):
r = []

@coroutine
def foo(arg):
async def foo(arg):
r.append(arg)

s = asyncio_server.AsyncServer()
Expand Down Expand Up @@ -802,8 +790,7 @@ def foo_handler(arg):
def test_trigger_event_coroutine(self):
result = []

@coroutine
def foo_handler(arg):
async def foo_handler(arg):
result.append('ok')
result.append(arg)

Expand All @@ -826,12 +813,10 @@ def foo_handler(arg):
self.assertIsNone(_run(s._trigger_event('message', 'bar')))

def test_trigger_event_coroutine_error(self):
@coroutine
def connect_handler(arg):
async def connect_handler(arg):
return 1 / 0

@coroutine
def foo_handler(arg):
async def foo_handler(arg):
return 1 / 0

s = asyncio_server.AsyncServer()
Expand All @@ -856,8 +841,7 @@ def foo_handler(arg):
def test_trigger_event_coroutine_async(self):
result = []

@coroutine
def foo_handler(arg):
async def foo_handler(arg):
result.append('ok')
result.append(arg)

Expand Down Expand Up @@ -885,8 +869,7 @@ def foo_handler(arg):
def test_trigger_event_coroutine_async_error(self):
result = []

@coroutine
def foo_handler(arg):
async def foo_handler(arg):
result.append(arg)
return 1 / 0

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import asyncio
import sys
import time
import unittest
Expand All @@ -8,25 +9,17 @@
else:
import mock

from engineio import asyncio_socket
from engineio import exceptions
from engineio import packet
from engineio import payload
if sys.version_info >= (3, 5):
import asyncio
from asyncio import coroutine
from engineio import asyncio_socket
else:
# mock coroutine so that Python 2 doesn't complain
def coroutine(f):
return f


def AsyncMock(*args, **kwargs):
"""Return a mock asynchronous function."""
m = mock.MagicMock(*args, **kwargs)

@coroutine
def mock_coro(*args, **kwargs):
async def mock_coro(*args, **kwargs):
return m(*args, **kwargs)

mock_coro.mock = m
Expand Down
Empty file added tests/common/__init__.py
Empty file.
1 change: 1 addition & 0 deletions tests/common/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<html></html>
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
3 changes: 2 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ deps=
websocket-client
websockets
basepython =
flake8: python3.6
flake8: python3.5
py27: python2.7
py35: python3.5
py36: python3.6
Expand Down Expand Up @@ -47,6 +47,7 @@ deps=

[testenv:flake8]
deps=
six
flake8
commands=
flake8 --exclude=".*" --ignore=E402,E722 engineio tests
Expand Down

0 comments on commit 3786502

Please sign in to comment.