From f36930f1655a6e4a15be34d51b02c7da71de8e02 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 22 Jul 2023 12:33:37 -0500 Subject: [PATCH] Fix zeroconf tests with cython 3 (#97054) --- tests/conftest.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 6b4c35c4a37..1b8a37e48f4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -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()