Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions tests/test_issue_746_mh200n_trace.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import pytest
from homeassistant.const import CONF_HOST, CONF_MAC, CONF_NAME, CONF_PASSWORD, CONF_PORT
from homeassistant.core import HomeAssistant
from homeassistant.core import HomeAssistant, callback
from OWNd.message import OWNCommand, OWNMessage
from pytest_homeassistant_custom_component.common import MockConfigEntry

Expand Down Expand Up @@ -122,9 +122,19 @@ async def test_issue_746_switch_04_wall_and_ha_toggling_and_scenario_6_events(
cen_events: list = []
scene_events: list = []
general_light_events: list = []
hass.bus.async_listen("myhome_cen_event", cen_events.append)
hass.bus.async_listen("myhome_scene_event", scene_events.append)
hass.bus.async_listen("myhome_general_light_event", general_light_events.append)
# ``@callback`` keeps the listeners on the event loop: a plain ``list.append`` runs in
# the executor, where two events fired back to back can be appended out of order
# (press / release arrived swapped on HA beta).
def _collect(events: list):
@callback
def _append(event) -> None:
events.append(event)

return _append

hass.bus.async_listen("myhome_cen_event", _collect(cen_events))
hass.bus.async_listen("myhome_scene_event", _collect(scene_events))
hass.bus.async_listen("myhome_general_light_event", _collect(general_light_events))

def _deliver_rx(raw_frame: str) -> OWNMessage:
msg = OWNMessage.parse(raw_frame)
Expand Down
Loading