mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 09:47:52 +00:00
Make feedreader recoverable (#134202)
raise ConfigEntryNotReady on connection errors during setup
This commit is contained in:
parent
0db07a033b
commit
7704ef95a4
@ -14,6 +14,7 @@ import feedparser
|
|||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
from homeassistant.exceptions import ConfigEntryNotReady
|
||||||
from homeassistant.helpers.storage import Store
|
from homeassistant.helpers.storage import Store
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||||
from homeassistant.util import dt as dt_util
|
from homeassistant.util import dt as dt_util
|
||||||
@ -101,7 +102,11 @@ class FeedReaderCoordinator(
|
|||||||
|
|
||||||
async def async_setup(self) -> None:
|
async def async_setup(self) -> None:
|
||||||
"""Set up the feed manager."""
|
"""Set up the feed manager."""
|
||||||
|
try:
|
||||||
feed = await self._async_fetch_feed()
|
feed = await self._async_fetch_feed()
|
||||||
|
except UpdateFailed as err:
|
||||||
|
raise ConfigEntryNotReady from err
|
||||||
|
|
||||||
self.logger.debug("Feed data fetched from %s : %s", self.url, feed["feed"])
|
self.logger.debug("Feed data fetched from %s : %s", self.url, feed["feed"])
|
||||||
if feed_author := feed["feed"].get("author"):
|
if feed_author := feed["feed"].get("author"):
|
||||||
self.feed_author = html.unescape(feed_author)
|
self.feed_author = html.unescape(feed_author)
|
||||||
|
@ -11,6 +11,7 @@ from freezegun.api import FrozenDateTimeFactory
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.feedreader.const import DOMAIN
|
from homeassistant.components.feedreader.const import DOMAIN
|
||||||
|
from homeassistant.config_entries import ConfigEntryState
|
||||||
from homeassistant.core import Event, HomeAssistant
|
from homeassistant.core import Event, HomeAssistant
|
||||||
from homeassistant.helpers import device_registry as dr
|
from homeassistant.helpers import device_registry as dr
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
@ -52,6 +53,23 @@ async def test_setup(
|
|||||||
assert not events
|
assert not events
|
||||||
|
|
||||||
|
|
||||||
|
async def test_setup_error(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
feed_one_event,
|
||||||
|
) -> None:
|
||||||
|
"""Test setup error."""
|
||||||
|
entry = create_mock_entry(VALID_CONFIG_DEFAULT)
|
||||||
|
entry.add_to_hass(hass)
|
||||||
|
with patch(
|
||||||
|
"homeassistant.components.feedreader.coordinator.feedparser.http.get"
|
||||||
|
) as feedreader:
|
||||||
|
feedreader.side_effect = urllib.error.URLError("Test")
|
||||||
|
feedreader.return_value = feed_one_event
|
||||||
|
await hass.config_entries.async_setup(entry.entry_id)
|
||||||
|
|
||||||
|
assert entry.state is ConfigEntryState.SETUP_RETRY
|
||||||
|
|
||||||
|
|
||||||
async def test_storage_data_writing(
|
async def test_storage_data_writing(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
events: list[Event],
|
events: list[Event],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user