mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Don't crash when firing event for timer for unregistered device (#118132)
This commit is contained in:
parent
6697cf07a6
commit
4a3808c08e
@ -292,7 +292,8 @@ class TimerManager:
|
|||||||
|
|
||||||
timer.cancel()
|
timer.cancel()
|
||||||
|
|
||||||
self.handlers[timer.device_id](TimerEventType.CANCELLED, timer)
|
if timer.device_id in self.handlers:
|
||||||
|
self.handlers[timer.device_id](TimerEventType.CANCELLED, timer)
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"Timer cancelled: id=%s, name=%s, seconds_left=%s, device_id=%s",
|
"Timer cancelled: id=%s, name=%s, seconds_left=%s, device_id=%s",
|
||||||
timer_id,
|
timer_id,
|
||||||
@ -320,7 +321,8 @@ class TimerManager:
|
|||||||
name=f"Timer {timer_id}",
|
name=f"Timer {timer_id}",
|
||||||
)
|
)
|
||||||
|
|
||||||
self.handlers[timer.device_id](TimerEventType.UPDATED, timer)
|
if timer.device_id in self.handlers:
|
||||||
|
self.handlers[timer.device_id](TimerEventType.UPDATED, timer)
|
||||||
|
|
||||||
if seconds > 0:
|
if seconds > 0:
|
||||||
log_verb = "increased"
|
log_verb = "increased"
|
||||||
@ -357,7 +359,8 @@ class TimerManager:
|
|||||||
task = self.timer_tasks.pop(timer_id)
|
task = self.timer_tasks.pop(timer_id)
|
||||||
task.cancel()
|
task.cancel()
|
||||||
|
|
||||||
self.handlers[timer.device_id](TimerEventType.UPDATED, timer)
|
if timer.device_id in self.handlers:
|
||||||
|
self.handlers[timer.device_id](TimerEventType.UPDATED, timer)
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"Timer paused: id=%s, name=%s, seconds_left=%s, device_id=%s",
|
"Timer paused: id=%s, name=%s, seconds_left=%s, device_id=%s",
|
||||||
timer_id,
|
timer_id,
|
||||||
@ -382,7 +385,8 @@ class TimerManager:
|
|||||||
name=f"Timer {timer.id}",
|
name=f"Timer {timer.id}",
|
||||||
)
|
)
|
||||||
|
|
||||||
self.handlers[timer.device_id](TimerEventType.UPDATED, timer)
|
if timer.device_id in self.handlers:
|
||||||
|
self.handlers[timer.device_id](TimerEventType.UPDATED, timer)
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"Timer unpaused: id=%s, name=%s, seconds_left=%s, device_id=%s",
|
"Timer unpaused: id=%s, name=%s, seconds_left=%s, device_id=%s",
|
||||||
timer_id,
|
timer_id,
|
||||||
@ -397,7 +401,8 @@ class TimerManager:
|
|||||||
|
|
||||||
timer.finish()
|
timer.finish()
|
||||||
|
|
||||||
self.handlers[timer.device_id](TimerEventType.FINISHED, timer)
|
if timer.device_id in self.handlers:
|
||||||
|
self.handlers[timer.device_id](TimerEventType.FINISHED, timer)
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"Timer finished: id=%s, name=%s, device_id=%s",
|
"Timer finished: id=%s, name=%s, device_id=%s",
|
||||||
timer_id,
|
timer_id,
|
||||||
|
@ -971,6 +971,36 @@ async def test_timers_not_supported(hass: HomeAssistant) -> None:
|
|||||||
language=hass.config.language,
|
language=hass.config.language,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Start a timer
|
||||||
|
@callback
|
||||||
|
def handle_timer(event_type: TimerEventType, timer: TimerInfo) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
device_id = "test_device"
|
||||||
|
unregister = timer_manager.register_handler(device_id, handle_timer)
|
||||||
|
|
||||||
|
timer_id = timer_manager.start_timer(
|
||||||
|
device_id,
|
||||||
|
hours=None,
|
||||||
|
minutes=5,
|
||||||
|
seconds=None,
|
||||||
|
language=hass.config.language,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Unregister handler so device no longer "supports" timers
|
||||||
|
unregister()
|
||||||
|
|
||||||
|
# All operations on the timer should not crash
|
||||||
|
timer_manager.add_time(timer_id, 1)
|
||||||
|
|
||||||
|
timer_manager.remove_time(timer_id, 1)
|
||||||
|
|
||||||
|
timer_manager.pause_timer(timer_id)
|
||||||
|
|
||||||
|
timer_manager.unpause_timer(timer_id)
|
||||||
|
|
||||||
|
timer_manager.cancel_timer(timer_id)
|
||||||
|
|
||||||
|
|
||||||
async def test_timer_status_with_names(hass: HomeAssistant, init_components) -> None:
|
async def test_timer_status_with_names(hass: HomeAssistant, init_components) -> None:
|
||||||
"""Test getting the status of named timers."""
|
"""Test getting the status of named timers."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user