mirror of
https://github.com/home-assistant/core.git
synced 2025-09-07 22:01:34 +02:00
Fix update coordinator ContextVar log for custom integrations (#150100)
This commit is contained in:
@@ -92,7 +92,7 @@ class DataUpdateCoordinator(BaseDataUpdateCoordinatorProtocol, Generic[_DataT]):
|
||||
frame.report_usage(
|
||||
"relies on ContextVar, but should pass the config entry explicitly.",
|
||||
core_behavior=frame.ReportBehavior.ERROR,
|
||||
custom_integration_behavior=frame.ReportBehavior.LOG,
|
||||
custom_integration_behavior=frame.ReportBehavior.IGNORE,
|
||||
breaks_in_ha_version="2026.8",
|
||||
)
|
||||
|
||||
|
@@ -942,17 +942,24 @@ async def test_config_entry_custom_integration(
|
||||
|
||||
# Default without context should be None
|
||||
crd = update_coordinator.DataUpdateCoordinator[int](hass, _LOGGER, name="test")
|
||||
|
||||
assert crd.config_entry is None
|
||||
assert (
|
||||
"Detected that integration 'my_integration' relies on ContextVar"
|
||||
not in caplog.text
|
||||
)
|
||||
# Should not log any warnings about ContextVar usage for custom integrations
|
||||
frame_records = [
|
||||
record
|
||||
for record in caplog.records
|
||||
if record.name == "homeassistant.helpers.frame"
|
||||
and record.levelno >= logging.WARNING
|
||||
]
|
||||
assert len(frame_records) == 0
|
||||
|
||||
# Explicit None is OK
|
||||
caplog.clear()
|
||||
|
||||
crd = update_coordinator.DataUpdateCoordinator[int](
|
||||
hass, _LOGGER, name="test", config_entry=None
|
||||
)
|
||||
|
||||
assert crd.config_entry is None
|
||||
assert (
|
||||
"Detected that integration 'my_integration' relies on ContextVar"
|
||||
@@ -961,38 +968,53 @@ async def test_config_entry_custom_integration(
|
||||
|
||||
# Explicit entry is OK
|
||||
caplog.clear()
|
||||
|
||||
crd = update_coordinator.DataUpdateCoordinator[int](
|
||||
hass, _LOGGER, name="test", config_entry=entry
|
||||
)
|
||||
|
||||
assert crd.config_entry is entry
|
||||
assert (
|
||||
"Detected that integration 'my_integration' relies on ContextVar"
|
||||
not in caplog.text
|
||||
)
|
||||
frame_records = [
|
||||
record
|
||||
for record in caplog.records
|
||||
if record.name == "homeassistant.helpers.frame"
|
||||
and record.levelno >= logging.WARNING
|
||||
]
|
||||
assert len(frame_records) == 0
|
||||
|
||||
# set ContextVar
|
||||
config_entries.current_entry.set(entry)
|
||||
|
||||
# Default with ContextVar should match the ContextVar
|
||||
caplog.clear()
|
||||
|
||||
crd = update_coordinator.DataUpdateCoordinator[int](hass, _LOGGER, name="test")
|
||||
|
||||
assert crd.config_entry is entry
|
||||
assert (
|
||||
"Detected that integration 'my_integration' relies on ContextVar"
|
||||
not in caplog.text
|
||||
)
|
||||
frame_records = [
|
||||
record
|
||||
for record in caplog.records
|
||||
if record.name == "homeassistant.helpers.frame"
|
||||
and record.levelno >= logging.WARNING
|
||||
]
|
||||
assert len(frame_records) == 0
|
||||
|
||||
# Explicit entry different from ContextVar not recommended, but should work
|
||||
another_entry = MockConfigEntry()
|
||||
caplog.clear()
|
||||
|
||||
crd = update_coordinator.DataUpdateCoordinator[int](
|
||||
hass, _LOGGER, name="test", config_entry=another_entry
|
||||
)
|
||||
|
||||
assert crd.config_entry is another_entry
|
||||
assert (
|
||||
"Detected that integration 'my_integration' relies on ContextVar"
|
||||
not in caplog.text
|
||||
)
|
||||
frame_records = [
|
||||
record
|
||||
for record in caplog.records
|
||||
if record.name == "homeassistant.helpers.frame"
|
||||
and record.levelno >= logging.WARNING
|
||||
]
|
||||
assert len(frame_records) == 0
|
||||
|
||||
|
||||
async def test_listener_unsubscribe_releases_coordinator(hass: HomeAssistant) -> None:
|
||||
|
Reference in New Issue
Block a user