From eb03ff96ad48c10f3ebbc46f3f5636dfec44fbe3 Mon Sep 17 00:00:00 2001 From: Luke Murphy Date: Tue, 30 Jun 2020 16:02:55 +0200 Subject: [PATCH] Add __init__ setup, pytest-trio and split up tests --- setup.cfg | 1 + simple_message_channels/smc.py | 27 +++++++++++++++++++++++++++ test/test_smc.py | 17 ++++++++++++----- tox.ini | 1 + 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/setup.cfg b/setup.cfg index 65cb7c8..cfe4c61 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,6 @@ [tool:pytest] testpaths = test +trio_mode = true [flake8] max-line-length = 80 diff --git a/simple_message_channels/smc.py b/simple_message_channels/smc.py index 95c7c5c..58b99ba 100644 --- a/simple_message_channels/smc.py +++ b/simple_message_channels/smc.py @@ -2,10 +2,37 @@ __all__ = ["SimpleMessageChannel"] +from typing import List, Optional +import attr + + +@attr.s(auto_attribs=True) class SimpleMessageChannel: """A simple message channel.""" + message: Optional[bytes] = None + ptr: int = 0 + varint: int = 0 + factor: int = 1 + length: int = 0 + header: int = 0 + state: int = 0 + consumed: int = 0 + max_size: int = 8 * 1024 * 1024 + types: List = attr.Factory(list) + + receiving: bool = False + destroyed: bool = False + error: Optional[Exception] = None + + # TODO(decentral1se): need to lookup type of what is being passed in + # context: ??? + + # TODO(decentral1se): allow to override instead of callback interface!? + # onmissing: ??? + # onmessage: ??? + async def send(self, channel: int, type: int, message: bytes) -> bytes: pass diff --git a/test/test_smc.py b/test/test_smc.py index bd98f04..30223bd 100644 --- a/test/test_smc.py +++ b/test/test_smc.py @@ -1,10 +1,17 @@ -async def test_send_recv(smc): +async def test_send_produces_bytes(smc): channel, type, message = 0, 0, b"abc" payload = await smc.send(channel, type, message) assert isinstance(payload, bytes) - async with smc.recv(payload) as response: - assert response.channel == channel - assert response.type == type - assert response.message == message + +# async def test_recv_context_manager(smc): +# channel, type, message = 0, 0, b"abc" + +# payload = await smc.send(channel, type, message) +# assert isinstance(payload, bytes) + +# async with smc.recv(payload) as response: +# assert response.channel == channel +# assert response.type == type +# assert response.message == message diff --git a/tox.ini b/tox.ini index 1ecc5d6..c420027 100644 --- a/tox.ini +++ b/tox.ini @@ -13,6 +13,7 @@ deps = pytest pytest-cov pytest-mock + pytest-trio commands = pytest test/ --cov={toxinidir}/simple_message_channels/ --no-cov-on-fail {posargs} [testenv:lint]