Avoid running final writes in executor in test (#84679)
This commit is contained in:
parent
345081ba15
commit
5c43f0861f
4 changed files with 10 additions and 7 deletions
|
@ -276,12 +276,13 @@ class Store(Generic[_T]):
|
||||||
self._data = None
|
self._data = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await self.hass.async_add_executor_job(
|
await self._async_write_data(self.path, data)
|
||||||
self._write_data, self.path, data
|
|
||||||
)
|
|
||||||
except (json_util.SerializationError, json_util.WriteError) as err:
|
except (json_util.SerializationError, json_util.WriteError) as err:
|
||||||
_LOGGER.error("Error writing config for %s: %s", self.key, err)
|
_LOGGER.error("Error writing config for %s: %s", self.key, err)
|
||||||
|
|
||||||
|
async def _async_write_data(self, path: str, data: dict) -> None:
|
||||||
|
await self.hass.async_add_executor_job(self._write_data, self.path, data)
|
||||||
|
|
||||||
def _write_data(self, path: str, data: dict) -> None:
|
def _write_data(self, path: str, data: dict) -> None:
|
||||||
"""Write the data."""
|
"""Write the data."""
|
||||||
os.makedirs(os.path.dirname(path), exist_ok=True)
|
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||||
|
|
|
@ -1165,13 +1165,13 @@ def mock_storage(data=None):
|
||||||
|
|
||||||
# Route through original load so that we trigger migration
|
# Route through original load so that we trigger migration
|
||||||
loaded = await orig_load(store)
|
loaded = await orig_load(store)
|
||||||
_LOGGER.info("Loading data for %s: %s", store.key, loaded)
|
_LOGGER.debug("Loading data for %s: %s", store.key, loaded)
|
||||||
return loaded
|
return loaded
|
||||||
|
|
||||||
def mock_write_data(store, path, data_to_write):
|
async def mock_write_data(store, path, data_to_write):
|
||||||
"""Mock version of write data."""
|
"""Mock version of write data."""
|
||||||
# To ensure that the data can be serialized
|
# To ensure that the data can be serialized
|
||||||
_LOGGER.info("Writing data to %s: %s", store.key, data_to_write)
|
_LOGGER.debug("Writing data to %s: %s", store.key, data_to_write)
|
||||||
raise_contains_mocks(data_to_write)
|
raise_contains_mocks(data_to_write)
|
||||||
data[store.key] = json.loads(json.dumps(data_to_write, cls=store._encoder))
|
data[store.key] = json.loads(json.dumps(data_to_write, cls=store._encoder))
|
||||||
|
|
||||||
|
@ -1184,7 +1184,7 @@ def mock_storage(data=None):
|
||||||
side_effect=mock_async_load,
|
side_effect=mock_async_load,
|
||||||
autospec=True,
|
autospec=True,
|
||||||
), patch(
|
), patch(
|
||||||
"homeassistant.helpers.storage.Store._write_data",
|
"homeassistant.helpers.storage.Store._async_write_data",
|
||||||
side_effect=mock_write_data,
|
side_effect=mock_write_data,
|
||||||
autospec=True,
|
autospec=True,
|
||||||
), patch(
|
), patch(
|
||||||
|
|
|
@ -164,6 +164,7 @@ async def test_setup_camera_new_data_camera_removed(hass: HomeAssistant) -> None
|
||||||
client.async_get_cameras = AsyncMock(return_value={KEY_CAMERAS: []})
|
client.async_get_cameras = AsyncMock(return_value={KEY_CAMERAS: []})
|
||||||
async_fire_time_changed(hass, dt_util.utcnow() + DEFAULT_SCAN_INTERVAL)
|
async_fire_time_changed(hass, dt_util.utcnow() + DEFAULT_SCAN_INTERVAL)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
await hass.async_block_till_done()
|
||||||
assert not hass.states.get(TEST_CAMERA_ENTITY_ID)
|
assert not hass.states.get(TEST_CAMERA_ENTITY_ID)
|
||||||
assert not device_registry.async_get_device({TEST_CAMERA_DEVICE_IDENTIFIER})
|
assert not device_registry.async_get_device({TEST_CAMERA_DEVICE_IDENTIFIER})
|
||||||
assert not device_registry.async_get_device({(DOMAIN, old_device_id)})
|
assert not device_registry.async_get_device({(DOMAIN, old_device_id)})
|
||||||
|
|
|
@ -220,6 +220,7 @@ async def test_device_management(hass: HomeAssistant):
|
||||||
):
|
):
|
||||||
async_fire_time_changed(hass, dt.utcnow() + COORDINATOR_UPDATE_INTERVAL)
|
async_fire_time_changed(hass, dt.utcnow() + COORDINATOR_UPDATE_INTERVAL)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
devices = dr.async_entries_for_config_entry(dev_reg, mock_entry.entry_id)
|
devices = dr.async_entries_for_config_entry(dev_reg, mock_entry.entry_id)
|
||||||
assert len(devices) == 1
|
assert len(devices) == 1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue