diff --git a/pylint/plugins/hass_enforce_type_hints.py b/pylint/plugins/hass_enforce_type_hints.py index 2f107fb1bf2..99e3a4769ae 100644 --- a/pylint/plugins/hass_enforce_type_hints.py +++ b/pylint/plugins/hass_enforce_type_hints.py @@ -98,6 +98,7 @@ _METHOD_MATCH: list[TypeHintMatch] = [ _TEST_FIXTURES: dict[str, list[str] | str] = { "aioclient_mock": "AiohttpClientMocker", "aiohttp_client": "ClientSessionGenerator", + "aiohttp_server": "Callable[[], TestServer]", "area_registry": "AreaRegistry", "async_setup_recorder_instance": "RecorderInstanceGenerator", "caplog": "pytest.LogCaptureFixture", @@ -110,6 +111,7 @@ _TEST_FIXTURES: dict[str, list[str] | str] = { "enable_schema_validation": "bool", "entity_registry": "EntityRegistry", "entity_registry_enabled_by_default": "None", + "event_loop": "AbstractEventLoop", "freezer": "FrozenDateTimeFactory", "hass_access_token": "str", "hass_admin_credential": "Credentials", @@ -146,9 +148,12 @@ _TEST_FIXTURES: dict[str, list[str] | str] = { "recorder_mock": "Recorder", "requests_mock": "requests_mock.Mocker", "snapshot": "SnapshotAssertion", + "socket_enabled": "None", "stub_blueprint_populate": "None", "tmp_path": "Path", "tmpdir": "py.path.local", + "unused_tcp_port_factory": "Callable[[], int]", + "unused_udp_port_factory": "Callable[[], int]", } _TEST_FUNCTION_MATCH = TypeHintMatch( function_name="test_*", diff --git a/tests/components/alexa/test_flash_briefings.py b/tests/components/alexa/test_flash_briefings.py index c6c2b3cc421..e76ed4ba6d0 100644 --- a/tests/components/alexa/test_flash_briefings.py +++ b/tests/components/alexa/test_flash_briefings.py @@ -1,15 +1,19 @@ """The tests for the Alexa component.""" +from asyncio import AbstractEventLoop import datetime from http import HTTPStatus +from aiohttp.test_utils import TestClient import pytest from homeassistant.components import alexa from homeassistant.components.alexa import const -from homeassistant.core import callback +from homeassistant.core import HomeAssistant, callback from homeassistant.setup import async_setup_component +from tests.typing import ClientSessionGenerator + SESSION_ID = "amzn1.echo-api.session.0000000-0000-0000-0000-00000000000" APPLICATION_ID = "amzn1.echo-sdk-ams.app.000000-d0ed-0000-ad00-000000d00ebe" REQUEST_ID = "amzn1.echo-api.request.0000000-0000-0000-0000-00000000000" @@ -20,7 +24,11 @@ NPR_NEWS_MP3_URL = "https://pd.npr.org/anon.npr-mp3/npr/news/newscast.mp3" @pytest.fixture -def alexa_client(event_loop, hass, hass_client): +def alexa_client( + event_loop: AbstractEventLoop, + hass: HomeAssistant, + hass_client: ClientSessionGenerator, +) -> TestClient: """Initialize a Home Assistant server for testing this module.""" loop = event_loop diff --git a/tests/components/alexa/test_intent.py b/tests/components/alexa/test_intent.py index 4670db4ffa9..b82048dca9b 100644 --- a/tests/components/alexa/test_intent.py +++ b/tests/components/alexa/test_intent.py @@ -1,8 +1,10 @@ """The tests for the Alexa component.""" +from asyncio import AbstractEventLoop from http import HTTPStatus import json +from aiohttp.test_utils import TestClient import pytest from homeassistant.components import alexa @@ -11,6 +13,8 @@ from homeassistant.const import CONTENT_TYPE_JSON from homeassistant.core import HomeAssistant, callback from homeassistant.setup import async_setup_component +from tests.typing import ClientSessionGenerator + SESSION_ID = "amzn1.echo-api.session.0000000-0000-0000-0000-00000000000" APPLICATION_ID = "amzn1.echo-sdk-ams.app.000000-d0ed-0000-ad00-000000d00ebe" APPLICATION_ID_SESSION_OPEN = ( @@ -26,7 +30,11 @@ NPR_NEWS_MP3_URL = "https://pd.npr.org/anon.npr-mp3/npr/news/newscast.mp3" @pytest.fixture -def alexa_client(event_loop, hass, hass_client): +def alexa_client( + event_loop: AbstractEventLoop, + hass: HomeAssistant, + hass_client: ClientSessionGenerator, +) -> TestClient: """Initialize a Home Assistant server for testing this module.""" loop = event_loop diff --git a/tests/components/auth/conftest.py b/tests/components/auth/conftest.py index a17661f5635..c7c92411ce8 100644 --- a/tests/components/auth/conftest.py +++ b/tests/components/auth/conftest.py @@ -1,9 +1,17 @@ """Test configuration for auth.""" +from asyncio import AbstractEventLoop + import pytest +from tests.typing import ClientSessionGenerator + @pytest.fixture -def aiohttp_client(event_loop, aiohttp_client, socket_enabled): +def aiohttp_client( + event_loop: AbstractEventLoop, + aiohttp_client: ClientSessionGenerator, + socket_enabled: None, +) -> ClientSessionGenerator: """Return aiohttp_client and allow opening sockets.""" return aiohttp_client diff --git a/tests/components/emulated_hue/test_upnp.py b/tests/components/emulated_hue/test_upnp.py index b7acaf4ea8b..79e6d7ac012 100644 --- a/tests/components/emulated_hue/test_upnp.py +++ b/tests/components/emulated_hue/test_upnp.py @@ -1,5 +1,6 @@ """The tests for the emulated Hue component.""" +from asyncio import AbstractEventLoop from http import HTTPStatus import json import unittest @@ -16,6 +17,7 @@ from homeassistant.const import CONTENT_TYPE_JSON from homeassistant.core import HomeAssistant from tests.common import get_test_instance_port +from tests.typing import ClientSessionGenerator BRIDGE_SERVER_PORT = get_test_instance_port() @@ -33,7 +35,11 @@ class MockTransport: @pytest.fixture -def aiohttp_client(event_loop, aiohttp_client, socket_enabled): +def aiohttp_client( + event_loop: AbstractEventLoop, + aiohttp_client: ClientSessionGenerator, + socket_enabled: None, +) -> ClientSessionGenerator: """Return aiohttp_client and allow opening sockets.""" return aiohttp_client diff --git a/tests/components/esphome/test_voice_assistant.py b/tests/components/esphome/test_voice_assistant.py index e67d833656e..f0014628d43 100644 --- a/tests/components/esphome/test_voice_assistant.py +++ b/tests/components/esphome/test_voice_assistant.py @@ -1,6 +1,7 @@ """Test ESPHome voice assistant server.""" import asyncio +from collections.abc import Callable import io import socket from unittest.mock import Mock, patch @@ -174,8 +175,8 @@ async def test_pipeline_events( async def test_udp_server( hass: HomeAssistant, - socket_enabled, - unused_udp_port_factory, + socket_enabled: None, + unused_udp_port_factory: Callable[[], int], voice_assistant_udp_pipeline_v1: VoiceAssistantUDPPipeline, ) -> None: """Test the UDP server runs and queues incoming data.""" @@ -301,8 +302,8 @@ async def test_error_calls_handle_finished( async def test_udp_server_multiple( hass: HomeAssistant, - socket_enabled, - unused_udp_port_factory, + socket_enabled: None, + unused_udp_port_factory: Callable[[], int], voice_assistant_udp_pipeline_v1: VoiceAssistantUDPPipeline, ) -> None: """Test that the UDP server raises an error if started twice.""" @@ -324,8 +325,8 @@ async def test_udp_server_multiple( async def test_udp_server_after_stopped( hass: HomeAssistant, - socket_enabled, - unused_udp_port_factory, + socket_enabled: None, + unused_udp_port_factory: Callable[[], int], voice_assistant_udp_pipeline_v1: VoiceAssistantUDPPipeline, ) -> None: """Test that the UDP server raises an error if started after stopped.""" diff --git a/tests/components/frontend/test_init.py b/tests/components/frontend/test_init.py index d715eb8859d..9f2710473fc 100644 --- a/tests/components/frontend/test_init.py +++ b/tests/components/frontend/test_init.py @@ -1,5 +1,6 @@ """The tests for Home Assistant frontend.""" +from asyncio import AbstractEventLoop from http import HTTPStatus import re from typing import Any @@ -25,7 +26,11 @@ from homeassistant.loader import async_get_integration from homeassistant.setup import async_setup_component from tests.common import MockUser, async_capture_events, async_fire_time_changed -from tests.typing import MockHAClientWebSocket, WebSocketGenerator +from tests.typing import ( + ClientSessionGenerator, + MockHAClientWebSocket, + WebSocketGenerator, +) MOCK_THEMES = { "happy": {"primary-color": "red", "app-header-background-color": "blue"}, @@ -84,7 +89,11 @@ async def frontend_themes(hass): @pytest.fixture -def aiohttp_client(event_loop, aiohttp_client, socket_enabled): +def aiohttp_client( + event_loop: AbstractEventLoop, + aiohttp_client: ClientSessionGenerator, + socket_enabled: None, +) -> ClientSessionGenerator: """Return aiohttp_client and allow opening sockets.""" return aiohttp_client diff --git a/tests/components/google_assistant/test_google_assistant.py b/tests/components/google_assistant/test_google_assistant.py index 648feb1cc8e..015818d132d 100644 --- a/tests/components/google_assistant/test_google_assistant.py +++ b/tests/components/google_assistant/test_google_assistant.py @@ -1,10 +1,12 @@ """The tests for the Google Assistant component.""" +from asyncio import AbstractEventLoop from http import HTTPStatus import json from unittest.mock import patch from aiohttp.hdrs import AUTHORIZATION +from aiohttp.test_utils import TestClient import pytest from homeassistant import const, core, setup @@ -24,6 +26,8 @@ from homeassistant.helpers import entity_registry as er from . import DEMO_DEVICES +from tests.typing import ClientSessionGenerator + API_PASSWORD = "test1234" PROJECT_ID = "hasstest-1234" @@ -38,7 +42,11 @@ def auth_header(hass_access_token): @pytest.fixture -def assistant_client(event_loop, hass, hass_client_no_auth): +def assistant_client( + event_loop: AbstractEventLoop, + hass: core.HomeAssistant, + hass_client_no_auth: ClientSessionGenerator, +) -> TestClient: """Create web client for the Google Assistant API.""" loop = event_loop loop.run_until_complete( @@ -83,7 +91,9 @@ async def wanted_platforms_only() -> None: @pytest.fixture -def hass_fixture(event_loop, hass): +def hass_fixture( + event_loop: AbstractEventLoop, hass: core.HomeAssistant +) -> core.HomeAssistant: """Set up a Home Assistant instance for these tests.""" loop = event_loop diff --git a/tests/components/hassio/test_handler.py b/tests/components/hassio/test_handler.py index 337a0dd864f..5089613285d 100644 --- a/tests/components/hassio/test_handler.py +++ b/tests/components/hassio/test_handler.py @@ -322,8 +322,8 @@ async def test_api_ingress_panels( ) async def test_api_headers( aiohttp_raw_server, # 'aiohttp_raw_server' must be before 'hass'! - hass, - socket_enabled, + hass: HomeAssistant, + socket_enabled: None, api_call: str, method: Literal["GET", "POST"], payload: Any, diff --git a/tests/components/homekit/conftest.py b/tests/components/homekit/conftest.py index fcbeafa3b60..19676538261 100644 --- a/tests/components/homekit/conftest.py +++ b/tests/components/homekit/conftest.py @@ -1,7 +1,10 @@ """HomeKit session fixtures.""" +from asyncio import AbstractEventLoop +from collections.abc import Generator from contextlib import suppress import os +from typing import Any from unittest.mock import patch import pytest @@ -10,6 +13,7 @@ from homeassistant.components.device_tracker.legacy import YAML_DEVICES from homeassistant.components.homekit.accessories import HomeDriver from homeassistant.components.homekit.const import BRIDGE_NAME, EVENT_HOMEKIT_CHANGED from homeassistant.components.homekit.iidmanager import AccessoryIIDStorage +from homeassistant.core import HomeAssistant from tests.common import async_capture_events @@ -22,7 +26,9 @@ def iid_storage(hass): @pytest.fixture -def run_driver(hass, event_loop, iid_storage): +def run_driver( + hass: HomeAssistant, event_loop: AbstractEventLoop, iid_storage: AccessoryIIDStorage +) -> Generator[HomeDriver, Any, None]: """Return a custom AccessoryDriver instance for HomeKit accessory init. This mock does not mock async_stop, so the driver will not be stopped @@ -49,7 +55,9 @@ def run_driver(hass, event_loop, iid_storage): @pytest.fixture -def hk_driver(hass, event_loop, iid_storage): +def hk_driver( + hass: HomeAssistant, event_loop: AbstractEventLoop, iid_storage: AccessoryIIDStorage +) -> Generator[HomeDriver, Any, None]: """Return a custom AccessoryDriver instance for HomeKit accessory init.""" with ( patch("pyhap.accessory_driver.AsyncZeroconf"), @@ -76,7 +84,12 @@ def hk_driver(hass, event_loop, iid_storage): @pytest.fixture -def mock_hap(hass, event_loop, iid_storage, mock_zeroconf): +def mock_hap( + hass: HomeAssistant, + event_loop: AbstractEventLoop, + iid_storage: AccessoryIIDStorage, + mock_zeroconf: None, +) -> Generator[HomeDriver, Any, None]: """Return a custom AccessoryDriver instance for HomeKit accessory init.""" with ( patch("pyhap.accessory_driver.AsyncZeroconf"), diff --git a/tests/components/http/conftest.py b/tests/components/http/conftest.py index 60b1b73ff83..5c10278040c 100644 --- a/tests/components/http/conftest.py +++ b/tests/components/http/conftest.py @@ -1,9 +1,17 @@ """Test configuration for http.""" +from asyncio import AbstractEventLoop + import pytest +from tests.typing import ClientSessionGenerator + @pytest.fixture -def aiohttp_client(event_loop, aiohttp_client, socket_enabled): +def aiohttp_client( + event_loop: AbstractEventLoop, + aiohttp_client: ClientSessionGenerator, + socket_enabled: None, +) -> ClientSessionGenerator: """Return aiohttp_client and allow opening sockets.""" return aiohttp_client diff --git a/tests/components/http/test_cors.py b/tests/components/http/test_cors.py index c4fd101f733..04f5db753c9 100644 --- a/tests/components/http/test_cors.py +++ b/tests/components/http/test_cors.py @@ -1,5 +1,6 @@ """Test cors for the HTTP component.""" +from asyncio import AbstractEventLoop from http import HTTPStatus from pathlib import Path from unittest.mock import patch @@ -13,6 +14,7 @@ from aiohttp.hdrs import ( AUTHORIZATION, ORIGIN, ) +from aiohttp.test_utils import TestClient import pytest from homeassistant.components.http.cors import setup_cors @@ -54,7 +56,9 @@ async def mock_handler(request): @pytest.fixture -def client(event_loop, aiohttp_client): +def client( + event_loop: AbstractEventLoop, aiohttp_client: ClientSessionGenerator +) -> TestClient: """Fixture to set up a web.Application.""" app = web.Application() setup_cors(app, [TRUSTED_ORIGIN]) diff --git a/tests/components/http/test_init.py b/tests/components/http/test_init.py index 9e892e2ee43..489be0878b3 100644 --- a/tests/components/http/test_init.py +++ b/tests/components/http/test_init.py @@ -1,6 +1,7 @@ """The tests for the Home Assistant HTTP component.""" import asyncio +from collections.abc import Callable from datetime import timedelta from http import HTTPStatus from ipaddress import ip_network @@ -85,7 +86,9 @@ class TestView(http.HomeAssistantView): async def test_registering_view_while_running( - hass: HomeAssistant, aiohttp_client: ClientSessionGenerator, unused_tcp_port_factory + hass: HomeAssistant, + aiohttp_client: ClientSessionGenerator, + unused_tcp_port_factory: Callable[[], int], ) -> None: """Test that we can register a view while the server is running.""" await async_setup_component( @@ -465,7 +468,9 @@ async def test_cors_defaults(hass: HomeAssistant) -> None: async def test_storing_config( - hass: HomeAssistant, aiohttp_client: ClientSessionGenerator, unused_tcp_port_factory + hass: HomeAssistant, + aiohttp_client: ClientSessionGenerator, + unused_tcp_port_factory: Callable[[], int], ) -> None: """Test that we store last working config.""" config = { diff --git a/tests/components/image_processing/test_init.py b/tests/components/image_processing/test_init.py index 62027552fb0..2bc093ce9a9 100644 --- a/tests/components/image_processing/test_init.py +++ b/tests/components/image_processing/test_init.py @@ -1,5 +1,7 @@ """The tests for the image_processing component.""" +from asyncio import AbstractEventLoop +from collections.abc import Callable from unittest.mock import PropertyMock, patch import pytest @@ -24,7 +26,11 @@ async def setup_homeassistant(hass: HomeAssistant): @pytest.fixture -def aiohttp_unused_port_factory(event_loop, unused_tcp_port_factory, socket_enabled): +def aiohttp_unused_port_factory( + event_loop: AbstractEventLoop, + unused_tcp_port_factory: Callable[[], int], + socket_enabled: None, +) -> Callable[[], int]: """Return aiohttp_unused_port and allow opening sockets.""" return unused_tcp_port_factory diff --git a/tests/components/meraki/test_device_tracker.py b/tests/components/meraki/test_device_tracker.py index d5d61516c08..c3126f7b76a 100644 --- a/tests/components/meraki/test_device_tracker.py +++ b/tests/components/meraki/test_device_tracker.py @@ -1,8 +1,10 @@ """The tests the for Meraki device tracker.""" +from asyncio import AbstractEventLoop from http import HTTPStatus import json +from aiohttp.test_utils import TestClient import pytest from homeassistant.components import device_tracker @@ -16,9 +18,15 @@ from homeassistant.const import CONF_PLATFORM from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component +from tests.typing import ClientSessionGenerator + @pytest.fixture -def meraki_client(event_loop, hass, hass_client): +def meraki_client( + event_loop: AbstractEventLoop, + hass: HomeAssistant, + hass_client: ClientSessionGenerator, +) -> TestClient: """Meraki mock client.""" loop = event_loop diff --git a/tests/components/motioneye/test_camera.py b/tests/components/motioneye/test_camera.py index 32763fbed3a..048ae19217a 100644 --- a/tests/components/motioneye/test_camera.py +++ b/tests/components/motioneye/test_camera.py @@ -1,10 +1,13 @@ """Test the motionEye camera.""" +from asyncio import AbstractEventLoop +from collections.abc import Callable import copy -from typing import Any, cast +from typing import cast from unittest.mock import AsyncMock, Mock, call from aiohttp import web +from aiohttp.test_utils import TestServer from aiohttp.web_exceptions import HTTPBadGateway from motioneye_client.client import ( MotionEyeClientError, @@ -63,7 +66,11 @@ from tests.common import async_fire_time_changed @pytest.fixture -def aiohttp_server(event_loop, aiohttp_server, socket_enabled): +def aiohttp_server( + event_loop: AbstractEventLoop, + aiohttp_server: Callable[[], TestServer], + socket_enabled: None, +) -> Callable[[], TestServer]: """Return aiohttp_server and allow opening sockets.""" return aiohttp_server @@ -220,7 +227,7 @@ async def test_unload_camera(hass: HomeAssistant) -> None: async def test_get_still_image_from_camera( - aiohttp_server: Any, hass: HomeAssistant + aiohttp_server: Callable[[], TestServer], hass: HomeAssistant ) -> None: """Test getting a still image.""" @@ -261,7 +268,9 @@ async def test_get_still_image_from_camera( assert image_handler.called -async def test_get_stream_from_camera(aiohttp_server: Any, hass: HomeAssistant) -> None: +async def test_get_stream_from_camera( + aiohttp_server: Callable[[], TestServer], hass: HomeAssistant +) -> None: """Test getting a stream.""" stream_handler = AsyncMock(return_value="") @@ -344,7 +353,7 @@ async def test_device_info( async def test_camera_option_stream_url_template( - aiohttp_server: Any, hass: HomeAssistant + aiohttp_server: Callable[[], TestServer], hass: HomeAssistant ) -> None: """Verify camera with a stream URL template option.""" client = create_mock_motioneye_client() @@ -384,7 +393,7 @@ async def test_camera_option_stream_url_template( async def test_get_stream_from_camera_with_broken_host( - aiohttp_server: Any, hass: HomeAssistant + aiohttp_server: Callable[[], TestServer], hass: HomeAssistant ) -> None: """Test getting a stream with a broken URL (no host).""" diff --git a/tests/components/nest/conftest.py b/tests/components/nest/conftest.py index dfe5a78cf5c..cff21c988fe 100644 --- a/tests/components/nest/conftest.py +++ b/tests/components/nest/conftest.py @@ -2,6 +2,7 @@ from __future__ import annotations +from asyncio import AbstractEventLoop from collections.abc import Generator import copy import shutil @@ -37,6 +38,7 @@ from .common import ( ) from tests.common import MockConfigEntry +from tests.typing import ClientSessionGenerator FAKE_TOKEN = "some-token" FAKE_REFRESH_TOKEN = "some-refresh-token" @@ -86,7 +88,11 @@ class FakeAuth(AbstractAuth): @pytest.fixture -def aiohttp_client(event_loop, aiohttp_client, socket_enabled): +def aiohttp_client( + event_loop: AbstractEventLoop, + aiohttp_client: ClientSessionGenerator, + socket_enabled: None, +) -> ClientSessionGenerator: """Return aiohttp_client and allow opening sockets.""" return aiohttp_client diff --git a/tests/components/rss_feed_template/test_init.py b/tests/components/rss_feed_template/test_init.py index 351c9e9d1cb..802fbb2244b 100644 --- a/tests/components/rss_feed_template/test_init.py +++ b/tests/components/rss_feed_template/test_init.py @@ -1,16 +1,24 @@ """The tests for the rss_feed_api component.""" +from asyncio import AbstractEventLoop from http import HTTPStatus +from aiohttp.test_utils import TestClient from defusedxml import ElementTree import pytest from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component +from tests.typing import ClientSessionGenerator + @pytest.fixture -def mock_http_client(event_loop, hass, hass_client): +def mock_http_client( + event_loop: AbstractEventLoop, + hass: HomeAssistant, + hass_client: ClientSessionGenerator, +) -> TestClient: """Set up test fixture.""" loop = event_loop config = { diff --git a/tests/components/voip/test_sip.py b/tests/components/voip/test_sip.py index 769be768261..1ca2f4aaaf2 100644 --- a/tests/components/voip/test_sip.py +++ b/tests/components/voip/test_sip.py @@ -9,7 +9,7 @@ from homeassistant.components import voip from homeassistant.core import HomeAssistant -async def test_create_sip_server(hass: HomeAssistant, socket_enabled) -> None: +async def test_create_sip_server(hass: HomeAssistant, socket_enabled: None) -> None: """Tests starting/stopping SIP server.""" result = await hass.config_entries.flow.async_init( voip.DOMAIN, context={"source": config_entries.SOURCE_USER} diff --git a/tests/scripts/test_auth.py b/tests/scripts/test_auth.py index 72bb4dd5b67..f497751a4d7 100644 --- a/tests/scripts/test_auth.py +++ b/tests/scripts/test_auth.py @@ -1,5 +1,6 @@ """Test the auth script to manage local users.""" +from asyncio import AbstractEventLoop import logging from typing import Any from unittest.mock import Mock, patch @@ -125,7 +126,7 @@ async def test_change_password_invalid_user( data.validate_login("invalid-user", "new-pass") -def test_parsing_args(event_loop) -> None: +def test_parsing_args(event_loop: AbstractEventLoop) -> None: """Test we parse args correctly.""" called = False diff --git a/tests/scripts/test_check_config.py b/tests/scripts/test_check_config.py index 79c64259f8b..8838e9c3b31 100644 --- a/tests/scripts/test_check_config.py +++ b/tests/scripts/test_check_config.py @@ -1,5 +1,6 @@ """Test check_config script.""" +from asyncio import AbstractEventLoop import logging from unittest.mock import patch @@ -55,7 +56,9 @@ def normalize_yaml_files(check_dict): @pytest.mark.parametrize("hass_config_yaml", [BAD_CORE_CONFIG]) -def test_bad_core_config(mock_is_file, event_loop, mock_hass_config_yaml: None) -> None: +def test_bad_core_config( + mock_is_file: None, event_loop: AbstractEventLoop, mock_hass_config_yaml: None +) -> None: """Test a bad core config setup.""" res = check_config.check(get_test_config_dir()) assert res["except"].keys() == {"homeassistant"} @@ -65,7 +68,7 @@ def test_bad_core_config(mock_is_file, event_loop, mock_hass_config_yaml: None) @pytest.mark.parametrize("hass_config_yaml", [BASE_CONFIG + "light:\n platform: demo"]) def test_config_platform_valid( - mock_is_file, event_loop, mock_hass_config_yaml: None + mock_is_file: None, event_loop: AbstractEventLoop, mock_hass_config_yaml: None ) -> None: """Test a valid platform setup.""" res = check_config.check(get_test_config_dir()) @@ -97,7 +100,11 @@ def test_config_platform_valid( ], ) def test_component_platform_not_found( - mock_is_file, event_loop, mock_hass_config_yaml: None, platforms, error + mock_is_file: None, + event_loop: AbstractEventLoop, + mock_hass_config_yaml: None, + platforms: set[str], + error: str, ) -> None: """Test errors if component or platform not found.""" # Make sure they don't exist @@ -122,7 +129,9 @@ def test_component_platform_not_found( } ], ) -def test_secrets(mock_is_file, event_loop, mock_hass_config_yaml: None) -> None: +def test_secrets( + mock_is_file: None, event_loop: AbstractEventLoop, mock_hass_config_yaml: None +) -> None: """Test secrets config checking method.""" res = check_config.check(get_test_config_dir(), True) @@ -151,7 +160,9 @@ def test_secrets(mock_is_file, event_loop, mock_hass_config_yaml: None) -> None: @pytest.mark.parametrize( "hass_config_yaml", [BASE_CONFIG + ' packages:\n p1:\n group: ["a"]'] ) -def test_package_invalid(mock_is_file, event_loop, mock_hass_config_yaml: None) -> None: +def test_package_invalid( + mock_is_file: None, event_loop: AbstractEventLoop, mock_hass_config_yaml: None +) -> None: """Test an invalid package.""" res = check_config.check(get_test_config_dir()) @@ -167,7 +178,9 @@ def test_package_invalid(mock_is_file, event_loop, mock_hass_config_yaml: None) @pytest.mark.parametrize( "hass_config_yaml", [BASE_CONFIG + "automation: !include no.yaml"] ) -def test_bootstrap_error(event_loop, mock_hass_config_yaml: None) -> None: +def test_bootstrap_error( + event_loop: AbstractEventLoop, mock_hass_config_yaml: None +) -> None: """Test a valid platform setup.""" res = check_config.check(get_test_config_dir(YAML_CONFIG_FILE)) err = res["except"].pop(check_config.ERROR_STR) diff --git a/tests/test_test_fixtures.py b/tests/test_test_fixtures.py index b240da3e31e..b3ce068289b 100644 --- a/tests/test_test_fixtures.py +++ b/tests/test_test_fixtures.py @@ -20,7 +20,7 @@ def test_sockets_disabled() -> None: socket.socket() -def test_sockets_enabled(socket_enabled) -> None: +def test_sockets_enabled(socket_enabled: None) -> None: """Test we can't connect to an address different from 127.0.0.1.""" mysocket = socket.socket() with pytest.raises(pytest_socket.SocketConnectBlockedError):