From e7637a1bce918bd5d8b60bca1e3c7e0c51700537 Mon Sep 17 00:00:00 2001 From: chewingbever Date: Thu, 27 Aug 2020 13:06:22 +0200 Subject: [PATCH] Daemon now must be async (more consistent) --- CHANGELOG.md | 4 ++++ frank/module/decorators/classes.py | 2 +- tests/test_decorators.py | 10 +++++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6188ae0..eae002c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## Unreleased +### Added +- Daemons can now accept an interval value, removing the need for a manual while True loop + ## v0.1 (2020/08/26) ### Added diff --git a/frank/module/decorators/classes.py b/frank/module/decorators/classes.py index 3239893..11f17a3 100644 --- a/frank/module/decorators/classes.py +++ b/frank/module/decorators/classes.py @@ -122,7 +122,7 @@ class Daemon(Simple): if interval > 0: async def loop(self, *args, **kwargs): while True: - func(self, *args, **kwargs) + await func(self, *args, **kwargs) await asyncio.sleep(interval) diff --git a/tests/test_decorators.py b/tests/test_decorators.py index 2c9f400..c9aa530 100644 --- a/tests/test_decorators.py +++ b/tests/test_decorators.py @@ -1,4 +1,7 @@ # =====IMPORTS===== +# Third-party imports +import pytest + # Own imports from frank import default, command, daemon @@ -27,7 +30,7 @@ class TestDecorators: return 'daemon' @daemon() - def daemon_dec(self): + async def daemon_dec(self): return self.daemon_no_dec() def test_default(self): @@ -36,5 +39,6 @@ class TestDecorators: def test_command(self): assert self.command_no_dec() == self.command_dec() - def test_daemon(self): - assert self.daemon_no_dec() == self.daemon_dec() + @pytest.mark.asyncio + async def test_daemon(self): + assert self.daemon_no_dec() == await self.daemon_dec()