1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 11:34:18 +00:00

⚗️ Fix the tests, even if i have no idea of how or why

This commit is contained in:
Steffo 2020-12-19 10:53:42 +01:00
parent b8705c59cd
commit d6ad1301cb
4 changed files with 31 additions and 20 deletions

View file

@ -63,7 +63,7 @@ class Blueprint(metaclass=abc.ABCMeta):
.. code-block:: .. code-block::
def print_msg(message: Message): def print_msg(message: Message):
message.requires(Message.text, Message.timestamp) message.requires("text", "timestamp")
print(f"{message.timestamp().isoformat()}: {message.text()}") print(f"{message.timestamp().isoformat()}: {message.text()}")
:raises .exc.NeverAvailableError: If at least one of the fields raised a :exc:`.exc.NeverAvailableError`. :raises .exc.NeverAvailableError: If at least one of the fields raised a :exc:`.exc.NeverAvailableError`.
@ -75,7 +75,7 @@ class Blueprint(metaclass=abc.ABCMeta):
for field in fields: for field in fields:
try: try:
field(self) self.__getattribute__(field)()
except exc.NeverAvailableError as ex: except exc.NeverAvailableError as ex:
exceptions.append(ex) exceptions.append(ex)
except exc.NotAvailableError as ex: except exc.NotAvailableError as ex:

View file

@ -8,7 +8,7 @@ from royalnet.royaltyping import *
import functools import functools
import logging import logging
from engineer import exc, blueprints from .. import exc, blueprints
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -155,7 +155,7 @@ class Filter:
- the :class:`.blueprints.Blueprint` never has data for at least one of the fields, - the :class:`.blueprints.Blueprint` never has data for at least one of the fields,
:exc:`.exc.NotAvailableError` is propagated upwards. :exc:`.exc.NotAvailableError` is propagated upwards.
:param fields: The fields to test for. :param fields: The fields to test for, as strings.
:param propagate_not_available: If :exc:`.exc.NotAvailableError` should be propagated :param propagate_not_available: If :exc:`.exc.NotAvailableError` should be propagated
instead of discarding the errored object. instead of discarding the errored object.
:param propagate_never_available: If :exc:`.exc.NeverAvailableError` should be propagated :param propagate_never_available: If :exc:`.exc.NeverAvailableError` should be propagated
@ -166,11 +166,11 @@ class Filter:
try: try:
return obj.requires(*fields) return obj.requires(*fields)
except exc.NotAvailableError: except exc.NotAvailableError:
if not propagate_not_available: if propagate_not_available:
raise raise
raise exc.Discard(obj, "Data is not available") raise exc.Discard(obj, "Data is not available")
except exc.NeverAvailableError: except exc.NeverAvailableError:
if not propagate_never_available: if propagate_never_available:
raise raise
raise exc.Discard(obj, "Data is never available") raise exc.Discard(obj, "Data is never available")

View file

@ -2,7 +2,7 @@ import pytest
import asyncio import asyncio
import async_timeout import async_timeout
import re import re
from .. import sentry, exc, blueprints from royalnet.engineer import sentry, exc, blueprints
@pytest.fixture @pytest.fixture
@ -82,6 +82,7 @@ class TestFilter:
async def test_filter(self, s: sentry.Sentry): async def test_filter(self, s: sentry.Sentry):
await s.queue.put(None) await s.queue.put(None)
await s.queue.put(None) await s.queue.put(None)
await s.queue.put(None)
assert await s.f().filter(lambda x: x is None, "Is not None").get_single() is None assert await s.f().filter(lambda x: x is None, "Is not None").get_single() is None
@ -147,28 +148,24 @@ class TestFilter:
return 3 return 3
avmsg = AvailableMessage() avmsg = AvailableMessage()
namsg = NotAvailableMessage()
nvmsg = NeverAvailableMessage()
await s.queue.put(avmsg) await s.queue.put(avmsg)
await s.queue.put(namsg) assert await s.f().requires("text").get_single() is avmsg
await s.queue.put(nvmsg)
await s.queue.put(namsg)
await s.queue.put(nvmsg)
assert await s.f().requires(blueprints.Message.text).get_single() is avmsg
await s.queue.put(NotAvailableMessage())
with pytest.raises(exc.Discard): with pytest.raises(exc.Discard):
await s.f().requires(blueprints.Message.text).get_single() await s.f().requires("text").get_single()
await s.queue.put(NeverAvailableMessage())
with pytest.raises(exc.NeverAvailableError): with pytest.raises(exc.NeverAvailableError):
await s.f().requires(blueprints.Message.text).get_single() await s.f().requires("text").get_single()
await s.queue.put(NotAvailableMessage())
with pytest.raises(exc.NotAvailableError): with pytest.raises(exc.NotAvailableError):
await s.f().requires(blueprints.Message.text, propagate_not_available=True).get_single() await s.f().requires("text", propagate_not_available=True).get_single()
await s.queue.put(NeverAvailableMessage())
with pytest.raises(exc.Discard): with pytest.raises(exc.Discard):
await s.f().requires(blueprints.Message.text, propagate_never_available=False).get_single() await s.f().requires("text", propagate_never_available=False).get_single()
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_startswith(self, s: sentry.Sentry): async def test_startswith(self, s: sentry.Sentry):

View file

@ -0,0 +1,14 @@
import asyncio
import pytest
async def sleep_and_raise():
await asyncio.sleep(0.001)
raise Exception("Please except this gift!")
@pytest.mark.asyncio
class TestAsyncio:
async def test_exception(self):
with pytest.raises(Exception):
await sleep_and_raise()