Handle http connection errors to Prusa printers (#120456)

This commit is contained in:
Stefan Agner 2024-06-25 22:34:56 +02:00 committed by GitHub
parent 1f0e47b251
commit 5983344746
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 1 deletions

View File

@ -9,6 +9,7 @@ import logging
from time import monotonic from time import monotonic
from typing import TypeVar from typing import TypeVar
from httpx import ConnectError
from pyprusalink import JobInfo, LegacyPrinterStatus, PrinterStatus, PrusaLink from pyprusalink import JobInfo, LegacyPrinterStatus, PrinterStatus, PrusaLink
from pyprusalink.types import InvalidAuth, PrusaLinkError from pyprusalink.types import InvalidAuth, PrusaLinkError
@ -47,6 +48,8 @@ class PrusaLinkUpdateCoordinator(DataUpdateCoordinator[T], ABC):
raise UpdateFailed("Invalid authentication") from None raise UpdateFailed("Invalid authentication") from None
except PrusaLinkError as err: except PrusaLinkError as err:
raise UpdateFailed(str(err)) from err raise UpdateFailed(str(err)) from err
except (TimeoutError, ConnectError) as err:
raise UpdateFailed("Cannot connect") from err
self.update_interval = self._get_update_interval(data) self.update_interval = self._get_update_interval(data)
return data return data

View File

@ -3,6 +3,7 @@
from datetime import timedelta from datetime import timedelta
from unittest.mock import patch from unittest.mock import patch
from httpx import ConnectError
from pyprusalink.types import InvalidAuth, PrusaLinkError from pyprusalink.types import InvalidAuth, PrusaLinkError
import pytest import pytest
@ -36,7 +37,10 @@ async def test_unloading(
assert state.state == "unavailable" assert state.state == "unavailable"
@pytest.mark.parametrize("exception", [InvalidAuth, PrusaLinkError]) @pytest.mark.parametrize(
"exception",
[InvalidAuth, PrusaLinkError, ConnectError("All connection attempts failed")],
)
async def test_failed_update( async def test_failed_update(
hass: HomeAssistant, mock_config_entry: ConfigEntry, exception hass: HomeAssistant, mock_config_entry: ConfigEntry, exception
) -> None: ) -> None: