From ee0b8c0002621b3f9800139a82a62ead76fa3df7 Mon Sep 17 00:00:00 2001 From: Daniil Fajnberg Date: Sat, 7 May 2022 16:16:50 +0200 Subject: [PATCH] End control server response with newline --- docs/source/conf.py | 2 +- setup.cfg | 2 +- src/asyncio_taskpool/control/session.py | 2 ++ tests/test_control/test_session.py | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 4a589eb..5c73bde 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ copyright = '2022 Daniil Fajnberg' author = 'Daniil Fajnberg' # The full version, including alpha/beta/rc tags -release = '1.1.2' +release = '1.1.3' # -- General configuration --------------------------------------------------- diff --git a/setup.cfg b/setup.cfg index 69013bd..fb466df 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = asyncio-taskpool -version = 1.1.2 +version = 1.1.3 author = Daniil Fajnberg author_email = mail@daniil.fajnberg.de description = Dynamically manage pools of asyncio tasks diff --git a/src/asyncio_taskpool/control/session.py b/src/asyncio_taskpool/control/session.py index 9df3a33..2a18217 100644 --- a/src/asyncio_taskpool/control/session.py +++ b/src/asyncio_taskpool/control/session.py @@ -148,6 +148,7 @@ class ControlSession: metavar="(A command followed by '-h' or '--help' will show command-specific help.)") self._parser.add_class_commands(self._pool.__class__) self._writer.write(str(self._pool).encode()) + self._writer.write(b'\n') await self._writer.drain() async def _parse_command(self, msg: str) -> None: @@ -197,4 +198,5 @@ class ControlSession: self._response_buffer.seek(0) self._response_buffer.truncate() self._writer.write(response.encode()) + self._writer.write(b'\n') await self._writer.drain() diff --git a/tests/test_control/test_session.py b/tests/test_control/test_session.py index d3ed90b..00c17c2 100644 --- a/tests/test_control/test_session.py +++ b/tests/test_control/test_session.py @@ -121,7 +121,7 @@ class ControlServerTestCase(IsolatedAsyncioTestCase): mock_parser_cls.assert_called_once_with(**expected_parser_kwargs) mock_add_subparsers.assert_called_once_with(**expected_subparsers_kwargs) mock_add_class_commands.assert_called_once_with(self.mock_pool.__class__) - self.mock_writer.write.assert_called_once_with(str(self.mock_pool).encode()) + self.mock_writer.write.assert_has_calls([call(str(self.mock_pool).encode()), call(b'\n')]) self.mock_writer.drain.assert_awaited_once_with() @patch.object(session.ControlSession, '_exec_property_and_respond') @@ -200,7 +200,7 @@ class ControlServerTestCase(IsolatedAsyncioTestCase): self.mock_reader.readline.assert_has_awaits([call(), call()]) mock__parse_command.assert_awaited_once_with(msg) self.assertEqual('', self.session._response_buffer.getvalue()) - self.mock_writer.write.assert_called_once_with(response.encode()) + self.mock_writer.write.assert_has_calls([call(response.encode()), call(b'\n')]) self.mock_writer.drain.assert_awaited_once_with() self.mock_reader.readline.reset_mock()