diff --git a/homeassistant/components/mill/__init__.py b/homeassistant/components/mill/__init__.py index 401a0f9e854..b2f06597563 100644 --- a/homeassistant/components/mill/__init__.py +++ b/homeassistant/components/mill/__init__.py @@ -66,8 +66,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: key = entry.data[CONF_USERNAME] conn_type = CLOUD - if not await mill_data_connection.connect(): - raise ConfigEntryNotReady + try: + if not await mill_data_connection.connect(): + raise ConfigEntryNotReady + except TimeoutError as error: + raise ConfigEntryNotReady from error data_coordinator = MillDataUpdateCoordinator( hass, mill_data_connection=mill_data_connection, diff --git a/tests/components/mill/test_init.py b/tests/components/mill/test_init.py index 8425c980f80..21201e955d7 100644 --- a/tests/components/mill/test_init.py +++ b/tests/components/mill/test_init.py @@ -1,5 +1,6 @@ """Tests for Mill init.""" +import asyncio from unittest.mock import patch from homeassistant.components import mill @@ -45,6 +46,22 @@ async def test_setup_with_cloud_config_fails(hass: HomeAssistant) -> None: assert entry.state is ConfigEntryState.SETUP_RETRY +async def test_setup_with_cloud_config_times_out(hass: HomeAssistant) -> None: + """Test setup of cloud config will retry if timed out.""" + entry = MockConfigEntry( + domain=mill.DOMAIN, + data={ + mill.CONF_USERNAME: "user", + mill.CONF_PASSWORD: "pswd", + mill.CONNECTION_TYPE: mill.CLOUD, + }, + ) + entry.add_to_hass(hass) + with patch("mill.Mill.connect", side_effect=asyncio.TimeoutError): + await hass.config_entries.async_setup(entry.entry_id) + assert entry.state is ConfigEntryState.SETUP_RETRY + + async def test_setup_with_old_cloud_config(hass: HomeAssistant) -> None: """Test setup of old cloud config.""" entry = MockConfigEntry(