diff --git a/tests/common.py b/tests/common.py index 6ee38b72532..6ccb804ee73 100644 --- a/tests/common.py +++ b/tests/common.py @@ -965,16 +965,6 @@ def patch_yaml_files(files_dict, endswith=True): return patch.object(yaml_loader, "open", mock_open_f, create=True) -def mock_coro(return_value=None, exception=None): - """Return a coro that returns a value or raise an exception.""" - fut = asyncio.Future() - if exception is not None: - fut.set_exception(exception) - else: - fut.set_result(return_value) - return fut - - @contextmanager def assert_setup_component(count, domain=None): """Collect valid configuration from setup_component. diff --git a/tests/components/ecobee/test_config_flow.py b/tests/components/ecobee/test_config_flow.py index a4185313f5f..7d79a10e912 100644 --- a/tests/components/ecobee/test_config_flow.py +++ b/tests/components/ecobee/test_config_flow.py @@ -14,7 +14,7 @@ from homeassistant.components.ecobee.const import ( from homeassistant.const import CONF_API_KEY from homeassistant.core import HomeAssistant -from tests.common import MockConfigEntry, mock_coro +from tests.common import MockConfigEntry async def test_abort_if_already_setup(hass: HomeAssistant) -> None: @@ -175,9 +175,7 @@ async def test_import_flow_triggered_with_ecobee_conf_and_invalid_data( with patch( "homeassistant.components.ecobee.config_flow.load_json_object", return_value=MOCK_ECOBEE_CONF, - ), patch.object( - flow, "async_step_user", return_value=mock_coro() - ) as mock_async_step_user: + ), patch.object(flow, "async_step_user") as mock_async_step_user: await flow.async_step_import(import_data=None) mock_async_step_user.assert_called_once_with( @@ -201,7 +199,7 @@ async def test_import_flow_triggered_with_ecobee_conf_and_valid_data_and_stale_t ), patch( "homeassistant.components.ecobee.config_flow.Ecobee" ) as mock_ecobee, patch.object( - flow, "async_step_user", return_value=mock_coro() + flow, "async_step_user" ) as mock_async_step_user: mock_ecobee = mock_ecobee.return_value mock_ecobee.refresh_tokens.return_value = False diff --git a/tests/components/ios/test_init.py b/tests/components/ios/test_init.py index 67c8bbde2cc..9586bd3c011 100644 --- a/tests/components/ios/test_init.py +++ b/tests/components/ios/test_init.py @@ -7,7 +7,7 @@ from homeassistant.components import ios from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component -from tests.common import mock_component, mock_coro +from tests.common import mock_component @pytest.fixture(autouse=True) @@ -28,7 +28,7 @@ async def test_creating_entry_sets_up_sensor(hass: HomeAssistant) -> None: """Test setting up iOS loads the sensor component.""" with patch( "homeassistant.components.ios.sensor.async_setup_entry", - return_value=mock_coro(True), + return_value=True, ) as mock_setup: assert await async_setup_component(hass, ios.DOMAIN, {ios.DOMAIN: {}}) await hass.async_block_till_done() @@ -39,7 +39,8 @@ async def test_creating_entry_sets_up_sensor(hass: HomeAssistant) -> None: async def test_configuring_ios_creates_entry(hass: HomeAssistant) -> None: """Test that specifying config will create an entry.""" with patch( - "homeassistant.components.ios.async_setup_entry", return_value=mock_coro(True) + "homeassistant.components.ios.async_setup_entry", + return_value=True, ) as mock_setup: await async_setup_component(hass, ios.DOMAIN, {"ios": {"push": {}}}) await hass.async_block_till_done() @@ -50,7 +51,8 @@ async def test_configuring_ios_creates_entry(hass: HomeAssistant) -> None: async def test_not_configuring_ios_not_creates_entry(hass: HomeAssistant) -> None: """Test that no config will not create an entry.""" with patch( - "homeassistant.components.ios.async_setup_entry", return_value=mock_coro(True) + "homeassistant.components.ios.async_setup_entry", + return_value=True, ) as mock_setup: await async_setup_component(hass, ios.DOMAIN, {"foo": "bar"}) await hass.async_block_till_done() diff --git a/tests/components/logi_circle/test_config_flow.py b/tests/components/logi_circle/test_config_flow.py index 885459a5df2..de4a9bd4da4 100644 --- a/tests/components/logi_circle/test_config_flow.py +++ b/tests/components/logi_circle/test_config_flow.py @@ -15,7 +15,7 @@ from homeassistant.components.logi_circle.config_flow import ( from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component -from tests.common import MockConfigEntry, mock_coro +from tests.common import MockConfigEntry class MockRequest: @@ -50,10 +50,12 @@ def mock_logi_circle(): with patch( "homeassistant.components.logi_circle.config_flow.LogiCircle" ) as logi_circle: + future = asyncio.Future() + future.set_result({"accountId": "testId"}) LogiCircle = logi_circle() LogiCircle.authorize = AsyncMock(return_value=True) LogiCircle.close = AsyncMock(return_value=True) - LogiCircle.account = mock_coro(return_value={"accountId": "testId"}) + LogiCircle.account = future LogiCircle.authorize_url = "http://authorize.url" yield LogiCircle diff --git a/tests/components/mill/test_init.py b/tests/components/mill/test_init.py index 2c17a2d7550..694e9537a8c 100644 --- a/tests/components/mill/test_init.py +++ b/tests/components/mill/test_init.py @@ -6,7 +6,7 @@ from homeassistant.config_entries import ConfigEntryState from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component -from tests.common import MockConfigEntry, mock_coro +from tests.common import MockConfigEntry async def test_setup_with_cloud_config(hass: HomeAssistant) -> None: @@ -109,7 +109,9 @@ async def test_unload_entry(hass: HomeAssistant) -> None: entry.add_to_hass(hass) with patch.object( - hass.config_entries, "async_forward_entry_unload", return_value=mock_coro(True) + hass.config_entries, + "async_forward_entry_unload", + return_value=True, ) as unload_entry, patch( "mill.Mill.fetch_heater_and_sensor_data", return_value={} ), patch( diff --git a/tests/components/mobile_app/test_http_api.py b/tests/components/mobile_app/test_http_api.py index 4b9169b48db..28a8a26657a 100644 --- a/tests/components/mobile_app/test_http_api.py +++ b/tests/components/mobile_app/test_http_api.py @@ -13,7 +13,7 @@ from homeassistant.setup import async_setup_component from .const import REGISTER, REGISTER_CLEARTEXT, RENDER_TEMPLATE -from tests.common import MockUser, mock_coro +from tests.common import MockUser from tests.typing import ClientSessionGenerator @@ -28,7 +28,6 @@ async def test_registration( with patch( "homeassistant.components.person.async_add_user_device_tracker", spec=True, - return_value=mock_coro(), ) as add_user_dev_track: resp = await api_client.post( "/api/mobile_app/registrations", json=REGISTER_CLEARTEXT diff --git a/tests/components/onboarding/test_init.py b/tests/components/onboarding/test_init.py index 0f7dc8d242b..bcaa9ad611f 100644 --- a/tests/components/onboarding/test_init.py +++ b/tests/components/onboarding/test_init.py @@ -8,7 +8,7 @@ from homeassistant.setup import async_setup_component from . import mock_storage -from tests.common import MockUser, mock_coro +from tests.common import MockUser # Temporarily: if auth not active, always set onboarded=True @@ -31,7 +31,6 @@ async def test_setup_views_if_not_onboarded(hass: HomeAssistant) -> None: """Test if onboarding is not done, we setup views.""" with patch( "homeassistant.components.onboarding.views.async_setup", - return_value=mock_coro(), ) as mock_setup: assert await async_setup_component(hass, "onboarding", {}) diff --git a/tests/components/owntracks/test_device_tracker.py b/tests/components/owntracks/test_device_tracker.py index 41c3b7f058d..1be21e8b1b2 100644 --- a/tests/components/owntracks/test_device_tracker.py +++ b/tests/components/owntracks/test_device_tracker.py @@ -9,7 +9,7 @@ from homeassistant.const import STATE_NOT_HOME from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component -from tests.common import MockConfigEntry, async_fire_mqtt_message, mock_coro +from tests.common import MockConfigEntry, async_fire_mqtt_message from tests.typing import ClientSessionGenerator USER = "greg" @@ -1303,7 +1303,7 @@ async def test_not_implemented_message(hass: HomeAssistant, context) -> None: """Handle not implemented message type.""" patch_handler = patch( "homeassistant.components.owntracks.messages.async_handle_not_impl_msg", - return_value=mock_coro(False), + return_value=False, ) patch_handler.start() assert not await send_message(hass, LWT_TOPIC, LWT_MESSAGE) @@ -1314,7 +1314,7 @@ async def test_unsupported_message(hass: HomeAssistant, context) -> None: """Handle not implemented message type.""" patch_handler = patch( "homeassistant.components.owntracks.messages.async_handle_unsupported_msg", - return_value=mock_coro(False), + return_value=False, ) patch_handler.start() assert not await send_message(hass, BAD_TOPIC, BAD_MESSAGE) @@ -1393,7 +1393,7 @@ def config_context(hass, setup_comp): """Set up the mocked context.""" patch_load = patch( "homeassistant.components.device_tracker.async_load_config", - return_value=mock_coro([]), + return_value=[], ) patch_load.start() diff --git a/tests/components/spaceapi/test_init.py b/tests/components/spaceapi/test_init.py index d2f81ac18dc..ac892eeb2d8 100644 --- a/tests/components/spaceapi/test_init.py +++ b/tests/components/spaceapi/test_init.py @@ -9,8 +9,6 @@ from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, PERCENTAGE, UnitOfTemp from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component -from tests.common import mock_coro - CONFIG = { DOMAIN: { "space": "Home", @@ -83,7 +81,7 @@ SENSOR_OUTPUT = { @pytest.fixture def mock_client(hass, hass_client): """Start the Home Assistant HTTP component.""" - with patch("homeassistant.components.spaceapi", return_value=mock_coro(True)): + with patch("homeassistant.components.spaceapi", return_value=True): hass.loop.run_until_complete(async_setup_component(hass, "spaceapi", CONFIG)) hass.states.async_set( diff --git a/tests/components/spc/test_init.py b/tests/components/spc/test_init.py index 7e4faa68e00..1972b7af5c8 100644 --- a/tests/components/spc/test_init.py +++ b/tests/components/spc/test_init.py @@ -6,8 +6,6 @@ from homeassistant.components.spc import DATA_API from homeassistant.const import STATE_ALARM_ARMED_AWAY, STATE_ALARM_DISARMED from homeassistant.core import HomeAssistant -from tests.common import mock_coro - async def test_valid_device_config(hass: HomeAssistant, monkeypatch) -> None: """Test valid device config.""" @@ -15,7 +13,7 @@ async def test_valid_device_config(hass: HomeAssistant, monkeypatch) -> None: with patch( "homeassistant.components.spc.SpcWebGateway.async_load_parameters", - return_value=mock_coro(True), + return_value=True, ): assert await async_setup_component(hass, "spc", config) is True @@ -26,7 +24,7 @@ async def test_invalid_device_config(hass: HomeAssistant, monkeypatch) -> None: with patch( "homeassistant.components.spc.SpcWebGateway.async_load_parameters", - return_value=mock_coro(True), + return_value=True, ): assert await async_setup_component(hass, "spc", config) is False @@ -53,7 +51,7 @@ async def test_update_alarm_device(hass: HomeAssistant) -> None: mock_areas.return_value = {"1": area_mock} with patch( "homeassistant.components.spc.SpcWebGateway.async_load_parameters", - return_value=mock_coro(True), + return_value=True, ): assert await async_setup_component(hass, "spc", config) is True diff --git a/tests/components/syncthru/test_config_flow.py b/tests/components/syncthru/test_config_flow.py index ae6172af6d8..948e55649fc 100644 --- a/tests/components/syncthru/test_config_flow.py +++ b/tests/components/syncthru/test_config_flow.py @@ -11,7 +11,7 @@ from homeassistant.components.syncthru.const import DOMAIN from homeassistant.const import CONF_NAME, CONF_URL from homeassistant.core import HomeAssistant -from tests.common import MockConfigEntry, mock_coro +from tests.common import MockConfigEntry from tests.test_util.aiohttp import AiohttpClientMocker FIXTURE_USER_INPUT = { @@ -90,7 +90,7 @@ async def test_syncthru_not_supported(hass: HomeAssistant) -> None: async def test_unknown_state(hass: HomeAssistant) -> None: """Test we show user form on unsupported device.""" - with patch.object(SyncThru, "update", return_value=mock_coro()), patch.object( + with patch.object(SyncThru, "update"), patch.object( SyncThru, "is_unknown_state", return_value=True ): result = await hass.config_entries.flow.async_init( diff --git a/tests/components/websocket_api/test_auth.py b/tests/components/websocket_api/test_auth.py index aba34aeb44b..d5ff879de78 100644 --- a/tests/components/websocket_api/test_auth.py +++ b/tests/components/websocket_api/test_auth.py @@ -23,7 +23,6 @@ from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.setup import async_setup_component -from tests.common import mock_coro from tests.typing import ClientSessionGenerator @@ -72,7 +71,6 @@ async def test_auth_via_msg_incorrect_pass(no_auth_websocket_client) -> None: """Test authenticating.""" with patch( "homeassistant.components.websocket_api.auth.process_wrong_login", - return_value=mock_coro(), ) as mock_process_wrong_login: await no_auth_websocket_client.send_json( {"type": TYPE_AUTH, "api_password": "wrong"} diff --git a/tests/components/zha/test_button.py b/tests/components/zha/test_button.py index 2a2fbc92ace..461e592ef85 100644 --- a/tests/components/zha/test_button.py +++ b/tests/components/zha/test_button.py @@ -35,8 +35,6 @@ from homeassistant.helpers import entity_registry as er from .common import find_entity_id from .conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_TYPE -from tests.common import mock_coro - @pytest.fixture(autouse=True) def button_platform_only(): @@ -151,7 +149,7 @@ async def test_button(hass: HomeAssistant, contact_sensor) -> None: with patch( "zigpy.zcl.Cluster.request", - return_value=mock_coro([0x00, zcl_f.Status.SUCCESS]), + return_value=[0x00, zcl_f.Status.SUCCESS], ): await hass.services.async_call( DOMAIN, @@ -191,7 +189,7 @@ async def test_frost_unlock(hass: HomeAssistant, tuya_water_valve) -> None: with patch( "zigpy.zcl.Cluster.request", - return_value=mock_coro([0x00, zcl_f.Status.SUCCESS]), + return_value=[0x00, zcl_f.Status.SUCCESS], ): await hass.services.async_call( DOMAIN, diff --git a/tests/components/zha/test_device_action.py b/tests/components/zha/test_device_action.py index 9c44a0d08b5..31ffe9449e2 100644 --- a/tests/components/zha/test_device_action.py +++ b/tests/components/zha/test_device_action.py @@ -19,7 +19,7 @@ from homeassistant.setup import async_setup_component from .conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_TYPE -from tests.common import async_get_device_automations, async_mock_service, mock_coro +from tests.common import async_get_device_automations, async_mock_service @pytest.fixture(autouse=True, name="stub_blueprint_populate") @@ -274,7 +274,7 @@ async def test_action(hass: HomeAssistant, device_ias, device_inovelli) -> None: with patch( "zigpy.zcl.Cluster.request", - return_value=mock_coro([0x00, zcl_f.Status.SUCCESS]), + return_value=[0x00, zcl_f.Status.SUCCESS], ): assert await async_setup_component( hass, diff --git a/tests/components/zha/test_number.py b/tests/components/zha/test_number.py index 60aa355af5f..67770efd591 100644 --- a/tests/components/zha/test_number.py +++ b/tests/components/zha/test_number.py @@ -23,8 +23,6 @@ from .common import ( ) from .conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_PROFILE, SIG_EP_TYPE -from tests.common import mock_coro - @pytest.fixture(autouse=True) def number_platform_only(): @@ -153,7 +151,7 @@ async def test_number( # change value from HA with patch( "zigpy.zcl.Cluster.write_attributes", - return_value=mock_coro([zcl_f.Status.SUCCESS, zcl_f.Status.SUCCESS]), + return_value=[zcl_f.Status.SUCCESS, zcl_f.Status.SUCCESS], ): # set value via UI await hass.services.async_call( diff --git a/tests/components/zha/test_siren.py b/tests/components/zha/test_siren.py index 2df6c2be5db..b953d833330 100644 --- a/tests/components/zha/test_siren.py +++ b/tests/components/zha/test_siren.py @@ -27,7 +27,7 @@ import homeassistant.util.dt as dt_util from .common import async_enable_traffic, find_entity_id from .conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_TYPE -from tests.common import async_fire_time_changed, mock_coro +from tests.common import async_fire_time_changed @pytest.fixture(autouse=True) @@ -87,7 +87,7 @@ async def test_siren(hass: HomeAssistant, siren) -> None: # turn on from HA with patch( "zigpy.device.Device.request", - return_value=mock_coro([0x00, zcl_f.Status.SUCCESS]), + return_value=[0x00, zcl_f.Status.SUCCESS], ), patch( "zigpy.zcl.Cluster.request", side_effect=zigpy.zcl.Cluster.request, @@ -119,7 +119,7 @@ async def test_siren(hass: HomeAssistant, siren) -> None: # turn off from HA with patch( "zigpy.device.Device.request", - return_value=mock_coro([0x01, zcl_f.Status.SUCCESS]), + return_value=[0x01, zcl_f.Status.SUCCESS], ), patch( "zigpy.zcl.Cluster.request", side_effect=zigpy.zcl.Cluster.request, @@ -151,7 +151,7 @@ async def test_siren(hass: HomeAssistant, siren) -> None: # turn on from HA with patch( "zigpy.device.Device.request", - return_value=mock_coro([0x00, zcl_f.Status.SUCCESS]), + return_value=[0x00, zcl_f.Status.SUCCESS], ), patch( "zigpy.zcl.Cluster.request", side_effect=zigpy.zcl.Cluster.request, diff --git a/tests/test_bootstrap.py b/tests/test_bootstrap.py index 26eef47273f..ea9e04ac993 100644 --- a/tests/test_bootstrap.py +++ b/tests/test_bootstrap.py @@ -23,7 +23,6 @@ from .common import ( MockModule, MockPlatform, get_test_config_dir, - mock_coro, mock_entity_platform, mock_integration, ) @@ -110,7 +109,7 @@ async def test_core_failure_loads_safe_mode( """Test failing core setup aborts further setup.""" with patch( "homeassistant.components.homeassistant.async_setup", - return_value=mock_coro(False), + return_value=False, ): await bootstrap.async_from_config_dict({"group": {}}, hass) diff --git a/tests/test_config_entries.py b/tests/test_config_entries.py index 75b6377973b..760c7138c88 100644 --- a/tests/test_config_entries.py +++ b/tests/test_config_entries.py @@ -40,7 +40,6 @@ from .common import ( MockPlatform, async_fire_time_changed, mock_config_flow, - mock_coro, mock_entity_platform, mock_integration, ) @@ -605,7 +604,10 @@ async def test_domains_gets_domains_excludes_ignore_and_disabled( async def test_saving_and_loading(hass: HomeAssistant) -> None: """Test that we're saving and loading correctly.""" mock_integration( - hass, MockModule("test", async_setup_entry=lambda *args: mock_coro(True)) + hass, + MockModule( + "test", async_setup_entry=lambda *args: AsyncMock(return_value=True) + ), ) mock_entity_platform(hass, "config_flow.test", None)