From 7c0ed37ed1948d47a1f43853dc10d6b5f1c65102 Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Mon, 7 Nov 2022 13:41:10 -0500 Subject: [PATCH 1/2] Ensure the serial port is closed when there is a connection failure (#209) --- tests/test_application.py | 17 +++++++++++++++++ zigpy_deconz/zigbee/application.py | 10 ++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/tests/test_application.py b/tests/test_application.py index d4ebfeb..52d7c70 100644 --- a/tests/test_application.py +++ b/tests/test_application.py @@ -180,6 +180,23 @@ def new_api(*args): assert app.version is sentinel.version +async def test_connect_failure(app): + with patch.object(application, "Deconz") as api_mock: + api = api_mock.return_value = MagicMock() + api.connect = AsyncMock() + api.version = AsyncMock(side_effect=RuntimeError("Broken")) + + app._api = None + + with pytest.raises(RuntimeError): + await app.connect() + + assert app._api is None + api.connect.assert_called_once() + api.version.assert_called_once() + api.close.assert_called_once() + + async def test_disconnect(app): reset_watchdog_task = app._reset_watchdog_task = MagicMock() api_close = app._api.close = MagicMock() diff --git a/zigpy_deconz/zigbee/application.py b/zigpy_deconz/zigbee/application.py index 55680ce..4ab365b 100644 --- a/zigpy_deconz/zigbee/application.py +++ b/zigpy_deconz/zigbee/application.py @@ -76,8 +76,14 @@ async def _reset_watchdog(self): async def connect(self): api = Deconz(self, self._config[zigpy.config.CONF_DEVICE]) - await api.connect() - self.version = await api.version() + + try: + await api.connect() + self.version = await api.version() + except Exception: + api.close() + raise + self._api = api self._written_endpoints.clear() From d91de3016c45fc87d78a63c054be5241db369a3b Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Mon, 7 Nov 2022 13:46:01 -0500 Subject: [PATCH 2/2] Bump version to 0.19.1 --- zigpy_deconz/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zigpy_deconz/__init__.py b/zigpy_deconz/__init__.py index 0f0e170..a8b21fe 100644 --- a/zigpy_deconz/__init__.py +++ b/zigpy_deconz/__init__.py @@ -3,6 +3,6 @@ # coding: utf-8 MAJOR_VERSION = 0 MINOR_VERSION = 19 -PATCH_VERSION = "0.dev0" +PATCH_VERSION = "1" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}"