Patch dt_util.utcnow earlier (#98050)

This commit is contained in:
Erik Montnemery 2023-08-08 19:16:52 +02:00 committed by GitHub
parent ba3f0372f3
commit a77009c3ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 11 deletions

View File

@ -4,7 +4,6 @@ from __future__ import annotations
import asyncio import asyncio
from collections.abc import AsyncGenerator, Callable, Coroutine, Generator from collections.abc import AsyncGenerator, Callable, Coroutine, Generator
from contextlib import asynccontextmanager from contextlib import asynccontextmanager
import datetime
import functools import functools
import gc import gc
import itertools import itertools
@ -32,6 +31,9 @@ import pytest_socket
import requests_mock import requests_mock
from syrupy.assertion import SnapshotAssertion from syrupy.assertion import SnapshotAssertion
# Setup patching if dt_util time functions before any other Home Assistant imports
from . import patch_time # noqa: F401, isort:skip
from homeassistant import core as ha, loader, runner from homeassistant import core as ha, loader, runner
from homeassistant.auth.const import GROUP_ID_ADMIN, GROUP_ID_READ_ONLY from homeassistant.auth.const import GROUP_ID_ADMIN, GROUP_ID_READ_ONLY
from homeassistant.auth.models import Credentials from homeassistant.auth.models import Credentials
@ -53,7 +55,6 @@ from homeassistant.helpers import (
config_entry_oauth2_flow, config_entry_oauth2_flow,
device_registry as dr, device_registry as dr,
entity_registry as er, entity_registry as er,
event,
issue_registry as ir, issue_registry as ir,
recorder as recorder_helper, recorder as recorder_helper,
) )
@ -109,15 +110,6 @@ asyncio.set_event_loop_policy(runner.HassEventLoopPolicy(False))
asyncio.set_event_loop_policy = lambda policy: None asyncio.set_event_loop_policy = lambda policy: None
def _utcnow() -> datetime.datetime:
"""Make utcnow patchable by freezegun."""
return datetime.datetime.now(datetime.UTC)
dt_util.utcnow = _utcnow # type: ignore[assignment]
event.time_tracker_utcnow = _utcnow # type: ignore[assignment]
def pytest_addoption(parser: pytest.Parser) -> None: def pytest_addoption(parser: pytest.Parser) -> None:
"""Register custom pytest options.""" """Register custom pytest options."""
parser.addoption("--dburl", action="store", default="sqlite://") parser.addoption("--dburl", action="store", default="sqlite://")

16
tests/patch_time.py Normal file
View File

@ -0,0 +1,16 @@
"""Patch time related functions."""
from __future__ import annotations
import datetime
from homeassistant import util
from homeassistant.util import dt as dt_util
def _utcnow() -> datetime.datetime:
"""Make utcnow patchable by freezegun."""
return datetime.datetime.now(datetime.UTC)
dt_util.utcnow = _utcnow # type: ignore[assignment]
util.utcnow = _utcnow # type: ignore[assignment]