Fix zeroconf tests with cython 3 (#97054)

pull/97057/head
J. Nick Koston 2023-07-22 12:33:37 -05:00 committed by GitHub
parent 9a5774a95d
commit f36930f165
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 0 deletions

View File

@ -1104,23 +1104,34 @@ def mock_get_source_ip() -> Generator[None, None, None]:
@pytest.fixture
def mock_zeroconf() -> Generator[None, None, None]:
"""Mock zeroconf."""
from zeroconf import DNSCache # pylint: disable=import-outside-toplevel
with patch(
"homeassistant.components.zeroconf.HaZeroconf", autospec=True
) as mock_zc, patch(
"homeassistant.components.zeroconf.HaAsyncServiceBrowser", autospec=True
):
zc = mock_zc.return_value
# DNSCache has strong Cython type checks, and MagicMock does not work
# so we must mock the class directly
zc.cache = DNSCache()
yield mock_zc
@pytest.fixture
def mock_async_zeroconf(mock_zeroconf: None) -> Generator[None, None, None]:
"""Mock AsyncZeroconf."""
from zeroconf import DNSCache # pylint: disable=import-outside-toplevel
with patch("homeassistant.components.zeroconf.HaAsyncZeroconf") as mock_aiozc:
zc = mock_aiozc.return_value
zc.async_unregister_service = AsyncMock()
zc.async_register_service = AsyncMock()
zc.async_update_service = AsyncMock()
zc.zeroconf.async_wait_for_start = AsyncMock()
# DNSCache has strong Cython type checks, and MagicMock does not work
# so we must mock the class directly
zc.zeroconf.cache = DNSCache()
zc.zeroconf.done = False
zc.async_close = AsyncMock()
zc.ha_async_close = AsyncMock()