From ff8b91aeea5bbb9709164d4218a110ef42bd87b1 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Fri, 17 Mar 2023 03:39:41 +0100 Subject: [PATCH] Add freezer to known test fixtures in pylint (#89825) Add freezer to known fixtures in pylint --- pylint/plugins/hass_enforce_type_hints.py | 1 + tests/components/calendar/test_trigger.py | 3 +- tests/components/demo/test_sensor.py | 9 ++++-- .../devolo_home_control/test_init.py | 2 +- .../components/hardware/test_websocket_api.py | 5 +++- .../homeassistant_alerts/test_init.py | 3 +- tests/components/mqtt/test_binary_sensor.py | 5 ++-- tests/components/mqtt/test_sensor.py | 5 ++-- tests/components/onewire/test_init.py | 2 +- tests/components/recorder/test_init.py | 3 +- tests/components/repairs/test_init.py | 5 +++- tests/components/sql/test_util.py | 10 +++---- .../components/template/test_binary_sensor.py | 10 +++++-- tests/components/tod/test_binary_sensor.py | 29 ++++++++++++------- 14 files changed, 61 insertions(+), 31 deletions(-) diff --git a/pylint/plugins/hass_enforce_type_hints.py b/pylint/plugins/hass_enforce_type_hints.py index 3e390e2810f..4092beb3da1 100644 --- a/pylint/plugins/hass_enforce_type_hints.py +++ b/pylint/plugins/hass_enforce_type_hints.py @@ -104,6 +104,7 @@ _TEST_FIXTURES: dict[str, list[str] | str] = { "enable_statistics": "bool", "enable_statistics_table_validation": "bool", "entity_registry": "EntityRegistry", + "freezer": "FrozenDateTimeFactory", "hass_access_token": "str", "hass_admin_credential": "Credentials", "hass_admin_user": "MockUser", diff --git a/tests/components/calendar/test_trigger.py b/tests/components/calendar/test_trigger.py index a5bba8794d1..7885a4524cf 100644 --- a/tests/components/calendar/test_trigger.py +++ b/tests/components/calendar/test_trigger.py @@ -15,6 +15,7 @@ import secrets from typing import Any from unittest.mock import patch +from freezegun.api import FrozenDateTimeFactory import pytest from homeassistant.components import calendar @@ -642,7 +643,7 @@ async def test_event_payload( async def test_trigger_timestamp_window_edge( - hass: HomeAssistant, calls, fake_schedule, freezer + hass: HomeAssistant, calls, fake_schedule, freezer: FrozenDateTimeFactory ) -> None: """Test that events in the edge of a scan are included.""" freezer.move_to("2022-04-19 11:00:00+00:00") diff --git a/tests/components/demo/test_sensor.py b/tests/components/demo/test_sensor.py index 3d96e9f9341..71c212694c4 100644 --- a/tests/components/demo/test_sensor.py +++ b/tests/components/demo/test_sensor.py @@ -1,6 +1,7 @@ """The tests for the demo sensor component.""" from datetime import timedelta +from freezegun.api import FrozenDateTimeFactory import pytest from homeassistant import core as ha @@ -13,7 +14,9 @@ from tests.common import mock_restore_cache_with_extra_data @pytest.mark.parametrize(("entity_id", "delta"), (("sensor.total_energy_kwh", 0.5),)) -async def test_energy_sensor(hass: HomeAssistant, entity_id, delta, freezer) -> None: +async def test_energy_sensor( + hass: HomeAssistant, entity_id, delta, freezer: FrozenDateTimeFactory +) -> None: """Test energy sensors increase periodically.""" assert await async_setup_component( hass, SENSOR_DOMAIN, {SENSOR_DOMAIN: {"platform": DOMAIN}} @@ -32,7 +35,9 @@ async def test_energy_sensor(hass: HomeAssistant, entity_id, delta, freezer) -> @pytest.mark.parametrize(("entity_id", "delta"), (("sensor.total_energy_kwh", 0.5),)) -async def test_restore_state(hass: HomeAssistant, entity_id, delta, freezer) -> None: +async def test_restore_state( + hass: HomeAssistant, entity_id, delta, freezer: FrozenDateTimeFactory +) -> None: """Test energy sensors restore state.""" fake_state = ha.State( entity_id, diff --git a/tests/components/devolo_home_control/test_init.py b/tests/components/devolo_home_control/test_init.py index 0eb011d5ef2..29572f2ece4 100644 --- a/tests/components/devolo_home_control/test_init.py +++ b/tests/components/devolo_home_control/test_init.py @@ -65,7 +65,7 @@ async def test_unload_entry(hass: HomeAssistant) -> None: async def test_remove_device( hass: HomeAssistant, hass_ws_client: WebSocketGenerator, -): +) -> None: """Test removing a device.""" assert await async_setup_component(hass, "config", {}) entry = configure_integration(hass) diff --git a/tests/components/hardware/test_websocket_api.py b/tests/components/hardware/test_websocket_api.py index b3a3e9ba114..98fa00486ff 100644 --- a/tests/components/hardware/test_websocket_api.py +++ b/tests/components/hardware/test_websocket_api.py @@ -3,6 +3,7 @@ from collections import namedtuple import datetime from unittest.mock import patch +from freezegun.api import FrozenDateTimeFactory import psutil_home_assistant as ha_psutil from homeassistant.components.hardware.const import DOMAIN @@ -33,7 +34,9 @@ TEST_TIME_ADVANCE_INTERVAL = datetime.timedelta(seconds=5 + 1) async def test_system_status_subscription( - hass: HomeAssistant, hass_ws_client: WebSocketGenerator, freezer + hass: HomeAssistant, + hass_ws_client: WebSocketGenerator, + freezer: FrozenDateTimeFactory, ) -> None: """Test websocket system status subscription.""" diff --git a/tests/components/homeassistant_alerts/test_init.py b/tests/components/homeassistant_alerts/test_init.py index 36f0cad7588..7f060b09cf9 100644 --- a/tests/components/homeassistant_alerts/test_init.py +++ b/tests/components/homeassistant_alerts/test_init.py @@ -5,6 +5,7 @@ from datetime import timedelta import json from unittest.mock import ANY, patch +from freezegun.api import FrozenDateTimeFactory import pytest from homeassistant.components.homeassistant_alerts import ( @@ -291,7 +292,7 @@ async def test_alerts_refreshed_on_component_load( late_components, initial_alerts, late_alerts, - freezer, + freezer: FrozenDateTimeFactory, ) -> None: """Test alerts are refreshed when components are loaded.""" diff --git a/tests/components/mqtt/test_binary_sensor.py b/tests/components/mqtt/test_binary_sensor.py index a088d2ac641..73176de9edd 100644 --- a/tests/components/mqtt/test_binary_sensor.py +++ b/tests/components/mqtt/test_binary_sensor.py @@ -5,6 +5,7 @@ import json from pathlib import Path from unittest.mock import patch +from freezegun.api import FrozenDateTimeFactory import pytest from homeassistant.components import binary_sensor, mqtt @@ -1088,7 +1089,7 @@ async def test_cleanup_triggers_and_restoring_state( mqtt_mock_entry_with_yaml_config: MqttMockHAClientGenerator, caplog: pytest.LogCaptureFixture, tmp_path: Path, - freezer, + freezer: FrozenDateTimeFactory, payload1, state1, payload2, @@ -1147,7 +1148,7 @@ async def test_cleanup_triggers_and_restoring_state( async def test_skip_restoring_state_with_over_due_expire_trigger( hass: HomeAssistant, mqtt_mock_entry_with_yaml_config: MqttMockHAClientGenerator, - freezer, + freezer: FrozenDateTimeFactory, ) -> None: """Test restoring a state with over due expire timer.""" diff --git a/tests/components/mqtt/test_sensor.py b/tests/components/mqtt/test_sensor.py index b40c2f43d04..c1bc07f77aa 100644 --- a/tests/components/mqtt/test_sensor.py +++ b/tests/components/mqtt/test_sensor.py @@ -5,6 +5,7 @@ import json from pathlib import Path from unittest.mock import MagicMock, patch +from freezegun.api import FrozenDateTimeFactory import pytest from homeassistant.components import mqtt, sensor @@ -1278,7 +1279,7 @@ async def test_cleanup_triggers_and_restoring_state( mqtt_mock_entry_with_yaml_config: MqttMockHAClientGenerator, caplog: pytest.LogCaptureFixture, tmp_path: Path, - freezer, + freezer: FrozenDateTimeFactory, ) -> None: """Test cleanup old triggers at reloading and restoring the state.""" domain = sensor.DOMAIN @@ -1338,7 +1339,7 @@ async def test_cleanup_triggers_and_restoring_state( async def test_skip_restoring_state_with_over_due_expire_trigger( hass: HomeAssistant, mqtt_mock_entry_with_yaml_config: MqttMockHAClientGenerator, - freezer, + freezer: FrozenDateTimeFactory, ) -> None: """Test restoring a state with over due expire timer.""" diff --git a/tests/components/onewire/test_init.py b/tests/components/onewire/test_init.py index 9382b95521c..5a69fb95e16 100644 --- a/tests/components/onewire/test_init.py +++ b/tests/components/onewire/test_init.py @@ -80,7 +80,7 @@ async def test_registry_cleanup( config_entry: ConfigEntry, owproxy: MagicMock, hass_ws_client: WebSocketGenerator, -): +) -> None: """Test being able to remove a disconnected device.""" assert await async_setup_component(hass, "config", {}) diff --git a/tests/components/recorder/test_init.py b/tests/components/recorder/test_init.py index ed804087d8a..e3b9145dc8b 100644 --- a/tests/components/recorder/test_init.py +++ b/tests/components/recorder/test_init.py @@ -10,6 +10,7 @@ import threading from typing import cast from unittest.mock import Mock, patch +from freezegun.api import FrozenDateTimeFactory import pytest from sqlalchemy.exc import DatabaseError, OperationalError, SQLAlchemyError @@ -1219,7 +1220,7 @@ def test_statistics_runs_initiated(hass_recorder: Callable[..., HomeAssistant]) @pytest.mark.freeze_time("2022-09-13 09:00:00+02:00") -def test_compile_missing_statistics(tmpdir, freezer) -> None: +def test_compile_missing_statistics(tmpdir, freezer: FrozenDateTimeFactory) -> None: """Test missing statistics are compiled on startup.""" now = dt_util.utcnow().replace(minute=0, second=0, microsecond=0) test_db_file = tmpdir.mkdir("sqlite").join("test_run_info.db") diff --git a/tests/components/repairs/test_init.py b/tests/components/repairs/test_init.py index 87acc96db23..bae71e71e2e 100644 --- a/tests/components/repairs/test_init.py +++ b/tests/components/repairs/test_init.py @@ -2,6 +2,7 @@ from unittest.mock import AsyncMock, Mock from freezegun import freeze_time +from freezegun.api import FrozenDateTimeFactory import pytest from homeassistant.components.repairs import repairs_flow_manager @@ -335,7 +336,9 @@ async def test_ignore_issue( async def test_delete_issue( - hass: HomeAssistant, hass_ws_client: WebSocketGenerator, freezer + hass: HomeAssistant, + hass_ws_client: WebSocketGenerator, + freezer: FrozenDateTimeFactory, ) -> None: """Test we can delete an issue.""" freezer.move_to("2022-07-19 07:53:05") diff --git a/tests/components/sql/test_util.py b/tests/components/sql/test_util.py index 31adbe076eb..5211a47c4d4 100644 --- a/tests/components/sql/test_util.py +++ b/tests/components/sql/test_util.py @@ -1,15 +1,13 @@ """Test the sql utils.""" -from unittest.mock import AsyncMock - -from homeassistant.components.recorder import get_instance +from homeassistant.components.recorder import Recorder, get_instance from homeassistant.components.sql.util import resolve_db_url from homeassistant.core import HomeAssistant async def test_resolve_db_url_when_none_configured( - recorder_mock: AsyncMock, + recorder_mock: Recorder, hass: HomeAssistant, -): +) -> None: """Test return recorder db_url if provided db_url is None.""" db_url = None resolved_url = resolve_db_url(hass, db_url) @@ -17,7 +15,7 @@ async def test_resolve_db_url_when_none_configured( assert resolved_url == get_instance(hass).db_url -async def test_resolve_db_url_when_configured(hass: HomeAssistant): +async def test_resolve_db_url_when_configured(hass: HomeAssistant) -> None: """Test return provided db_url if it's set.""" db_url = "mssql://" resolved_url = resolve_db_url(hass, db_url) diff --git a/tests/components/template/test_binary_sensor.py b/tests/components/template/test_binary_sensor.py index 6483524545d..1e6b2cc3840 100644 --- a/tests/components/template/test_binary_sensor.py +++ b/tests/components/template/test_binary_sensor.py @@ -3,6 +3,7 @@ from datetime import datetime, timedelta, timezone import logging from unittest.mock import patch +from freezegun.api import FrozenDateTimeFactory import pytest from homeassistant import setup @@ -1257,7 +1258,12 @@ async def test_trigger_entity_restore_state( ) @pytest.mark.parametrize("restored_state", [ON, OFF]) async def test_trigger_entity_restore_state_auto_off( - hass: HomeAssistant, count, domain, config, restored_state, freezer + hass: HomeAssistant, + count, + domain, + config, + restored_state, + freezer: FrozenDateTimeFactory, ) -> None: """Test restoring trigger template binary sensor.""" @@ -1317,7 +1323,7 @@ async def test_trigger_entity_restore_state_auto_off( ], ) async def test_trigger_entity_restore_state_auto_off_expired( - hass: HomeAssistant, count, domain, config, freezer + hass: HomeAssistant, count, domain, config, freezer: FrozenDateTimeFactory ) -> None: """Test restoring trigger template binary sensor.""" diff --git a/tests/components/tod/test_binary_sensor.py b/tests/components/tod/test_binary_sensor.py index 23b76250164..0f0a1456459 100644 --- a/tests/components/tod/test_binary_sensor.py +++ b/tests/components/tod/test_binary_sensor.py @@ -2,6 +2,7 @@ from datetime import datetime, timedelta from freezegun import freeze_time +from freezegun.api import FrozenDateTimeFactory import pytest from homeassistant.const import STATE_OFF, STATE_ON @@ -104,7 +105,7 @@ async def test_midnight_turnover_before_midnight_inside_period( async def test_midnight_turnover_after_midnight_inside_period( - hass: HomeAssistant, freezer, hass_tz_info + hass: HomeAssistant, freezer: FrozenDateTimeFactory, hass_tz_info ) -> None: """Test midnight turnover setting before midnight inside period .""" test_time = datetime(2019, 1, 10, 21, 0, 0, tzinfo=hass_tz_info) @@ -163,7 +164,7 @@ async def test_after_happens_tomorrow(hass: HomeAssistant) -> None: async def test_midnight_turnover_after_midnight_outside_period( - hass: HomeAssistant, freezer, hass_tz_info + hass: HomeAssistant, freezer: FrozenDateTimeFactory, hass_tz_info ) -> None: """Test midnight turnover setting before midnight inside period .""" test_time = datetime(2019, 1, 10, 20, 0, 0, tzinfo=hass_tz_info) @@ -197,7 +198,7 @@ async def test_midnight_turnover_after_midnight_outside_period( async def test_from_sunrise_to_sunset( - hass: HomeAssistant, freezer, hass_tz_info + hass: HomeAssistant, freezer: FrozenDateTimeFactory, hass_tz_info ) -> None: """Test period from sunrise to sunset.""" test_time = datetime(2019, 1, 12, tzinfo=hass_tz_info) @@ -256,7 +257,7 @@ async def test_from_sunrise_to_sunset( async def test_from_sunset_to_sunrise( - hass: HomeAssistant, freezer, hass_tz_info + hass: HomeAssistant, freezer: FrozenDateTimeFactory, hass_tz_info ) -> None: """Test period from sunset to sunrise.""" test_time = datetime(2019, 1, 12, tzinfo=hass_tz_info) @@ -311,7 +312,9 @@ async def test_from_sunset_to_sunrise( assert state.state == STATE_OFF -async def test_offset(hass: HomeAssistant, freezer, hass_tz_info) -> None: +async def test_offset( + hass: HomeAssistant, freezer: FrozenDateTimeFactory, hass_tz_info +) -> None: """Test offset.""" after = datetime(2019, 1, 10, 18, 0, 0, tzinfo=hass_tz_info) + timedelta( hours=1, minutes=34 @@ -365,7 +368,9 @@ async def test_offset(hass: HomeAssistant, freezer, hass_tz_info) -> None: assert state.state == STATE_OFF -async def test_offset_overnight(hass: HomeAssistant, freezer, hass_tz_info) -> None: +async def test_offset_overnight( + hass: HomeAssistant, freezer: FrozenDateTimeFactory, hass_tz_info +) -> None: """Test offset overnight.""" after = datetime(2019, 1, 10, 18, 0, 0, tzinfo=hass_tz_info) + timedelta( hours=1, minutes=34 @@ -397,7 +402,7 @@ async def test_offset_overnight(hass: HomeAssistant, freezer, hass_tz_info) -> N async def test_norwegian_case_winter( - hass: HomeAssistant, freezer, hass_tz_info + hass: HomeAssistant, freezer: FrozenDateTimeFactory, hass_tz_info ) -> None: """Test location in Norway where the sun doesn't set in summer.""" hass.config.latitude = 69.6 @@ -465,7 +470,7 @@ async def test_norwegian_case_winter( async def test_norwegian_case_summer( - hass: HomeAssistant, freezer, hass_tz_info + hass: HomeAssistant, freezer: FrozenDateTimeFactory, hass_tz_info ) -> None: """Test location in Norway where the sun doesn't set in summer.""" hass.config.latitude = 69.6 @@ -534,7 +539,9 @@ async def test_norwegian_case_summer( assert state.state == STATE_OFF -async def test_sun_offset(hass: HomeAssistant, freezer, hass_tz_info) -> None: +async def test_sun_offset( + hass: HomeAssistant, freezer: FrozenDateTimeFactory, hass_tz_info +) -> None: """Test sun event with offset.""" test_time = datetime(2019, 1, 12, tzinfo=hass_tz_info) sunrise = dt_util.as_local( @@ -608,7 +615,9 @@ async def test_sun_offset(hass: HomeAssistant, freezer, hass_tz_info) -> None: assert state.state == STATE_ON -async def test_dst(hass: HomeAssistant, freezer, hass_tz_info) -> None: +async def test_dst( + hass: HomeAssistant, freezer: FrozenDateTimeFactory, hass_tz_info +) -> None: """Test sun event with offset.""" hass.config.time_zone = "CET" dt_util.set_default_time_zone(dt_util.get_time_zone("CET"))