Add helper method to clear logger overwrites for tests (#143301)
parent
b5b934b8a1
commit
a749ecceed
|
@ -24,8 +24,10 @@ from .const import (
|
|||
SERVICE_SET_LEVEL,
|
||||
)
|
||||
from .helpers import (
|
||||
DATA_LOGGER,
|
||||
LoggerDomainConfig,
|
||||
LoggerSettings,
|
||||
_clear_logger_overwrites, # noqa: F401
|
||||
set_default_log_level,
|
||||
set_log_levels,
|
||||
)
|
||||
|
@ -54,7 +56,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||
|
||||
settings = LoggerSettings(hass, config)
|
||||
|
||||
domain_config = hass.data[DOMAIN] = LoggerDomainConfig({}, settings)
|
||||
domain_config = hass.data[DATA_LOGGER] = LoggerDomainConfig({}, settings)
|
||||
logging.setLoggerClass(_get_logger_class(domain_config.overrides))
|
||||
|
||||
websocket_api.async_load_websocket_api(hass)
|
||||
|
|
|
@ -9,13 +9,14 @@ from dataclasses import asdict, dataclass
|
|||
from enum import StrEnum
|
||||
from functools import lru_cache
|
||||
import logging
|
||||
from typing import Any, cast
|
||||
from typing import Any
|
||||
|
||||
from homeassistant.const import EVENT_LOGGING_CHANGED
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.storage import Store
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
from homeassistant.loader import IntegrationNotFound, async_get_integration
|
||||
from homeassistant.util.hass_dict import HassKey
|
||||
|
||||
from .const import (
|
||||
DOMAIN,
|
||||
|
@ -28,6 +29,8 @@ from .const import (
|
|||
STORAGE_VERSION,
|
||||
)
|
||||
|
||||
DATA_LOGGER: HassKey[LoggerDomainConfig] = HassKey(DOMAIN)
|
||||
|
||||
SAVE_DELAY = 15.0
|
||||
# At startup, we want to save after a long delay to avoid
|
||||
# saving while the system is still starting up. If the system
|
||||
|
@ -39,12 +42,6 @@ SAVE_DELAY = 15.0
|
|||
SAVE_DELAY_LONG = 180.0
|
||||
|
||||
|
||||
@callback
|
||||
def async_get_domain_config(hass: HomeAssistant) -> LoggerDomainConfig:
|
||||
"""Return the domain config."""
|
||||
return cast(LoggerDomainConfig, hass.data[DOMAIN])
|
||||
|
||||
|
||||
@callback
|
||||
def set_default_log_level(hass: HomeAssistant, level: int) -> None:
|
||||
"""Set the default log level for components."""
|
||||
|
@ -55,7 +52,7 @@ def set_default_log_level(hass: HomeAssistant, level: int) -> None:
|
|||
@callback
|
||||
def set_log_levels(hass: HomeAssistant, logpoints: Mapping[str, int]) -> None:
|
||||
"""Set the specified log levels."""
|
||||
async_get_domain_config(hass).overrides.update(logpoints)
|
||||
hass.data[DATA_LOGGER].overrides.update(logpoints)
|
||||
for key, value in logpoints.items():
|
||||
_set_log_level(logging.getLogger(key), value)
|
||||
hass.bus.async_fire(EVENT_LOGGING_CHANGED)
|
||||
|
@ -78,6 +75,12 @@ def _chattiest_log_level(level1: int, level2: int) -> int:
|
|||
return min(level1, level2)
|
||||
|
||||
|
||||
@callback
|
||||
def _clear_logger_overwrites(hass: HomeAssistant) -> None:
|
||||
"""Clear logger overwrites. Used for testing."""
|
||||
hass.data[DATA_LOGGER].overrides.clear()
|
||||
|
||||
|
||||
async def get_integration_loggers(hass: HomeAssistant, domain: str) -> set[str]:
|
||||
"""Get loggers for an integration."""
|
||||
loggers: set[str] = {f"homeassistant.components.{domain}"}
|
||||
|
|
|
@ -12,10 +12,10 @@ from homeassistant.setup import async_get_loaded_integrations
|
|||
|
||||
from .const import LOGSEVERITY
|
||||
from .helpers import (
|
||||
DATA_LOGGER,
|
||||
LoggerSetting,
|
||||
LogPersistance,
|
||||
LogSettingsType,
|
||||
async_get_domain_config,
|
||||
get_logger,
|
||||
)
|
||||
|
||||
|
@ -68,7 +68,7 @@ async def handle_integration_log_level(
|
|||
msg["id"], websocket_api.ERR_NOT_FOUND, "Integration not found"
|
||||
)
|
||||
return
|
||||
await async_get_domain_config(hass).settings.async_update(
|
||||
await hass.data[DATA_LOGGER].settings.async_update(
|
||||
hass,
|
||||
msg["integration"],
|
||||
LoggerSetting(
|
||||
|
@ -93,7 +93,7 @@ async def handle_module_log_level(
|
|||
hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any]
|
||||
) -> None:
|
||||
"""Handle setting integration log level."""
|
||||
await async_get_domain_config(hass).settings.async_update(
|
||||
await hass.data[DATA_LOGGER].settings.async_update(
|
||||
hass,
|
||||
msg["module"],
|
||||
LoggerSetting(
|
||||
|
|
|
@ -46,7 +46,11 @@ from homeassistant.components import device_automation, persistent_notification
|
|||
from homeassistant.components.device_automation import ( # noqa: F401
|
||||
_async_get_device_automation_capabilities as async_get_device_automation_capabilities,
|
||||
)
|
||||
from homeassistant.components.logger import DOMAIN as LOGGER_DOMAIN, SERVICE_SET_LEVEL
|
||||
from homeassistant.components.logger import (
|
||||
DOMAIN as LOGGER_DOMAIN,
|
||||
SERVICE_SET_LEVEL,
|
||||
_clear_logger_overwrites,
|
||||
)
|
||||
from homeassistant.config import IntegrationConfigInfo, async_process_component_config
|
||||
from homeassistant.config_entries import ConfigEntry, ConfigFlow, ConfigFlowResult
|
||||
from homeassistant.const import (
|
||||
|
@ -1708,7 +1712,7 @@ async def async_call_logger_set_level(
|
|||
)
|
||||
await hass.async_block_till_done()
|
||||
yield
|
||||
hass.data[LOGGER_DOMAIN].overrides.clear()
|
||||
_clear_logger_overwrites(hass)
|
||||
|
||||
|
||||
def import_and_test_deprecated_constant_enum(
|
||||
|
|
|
@ -4,7 +4,7 @@ import logging
|
|||
from unittest.mock import patch
|
||||
|
||||
from homeassistant import loader
|
||||
from homeassistant.components.logger.helpers import async_get_domain_config
|
||||
from homeassistant.components.logger.helpers import DATA_LOGGER
|
||||
from homeassistant.components.websocket_api import TYPE_RESULT
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
@ -76,7 +76,7 @@ async def test_integration_log_level(
|
|||
assert msg["type"] == TYPE_RESULT
|
||||
assert msg["success"]
|
||||
|
||||
assert async_get_domain_config(hass).overrides == {
|
||||
assert hass.data[DATA_LOGGER].overrides == {
|
||||
"homeassistant.components.websocket_api": logging.DEBUG
|
||||
}
|
||||
|
||||
|
@ -126,7 +126,7 @@ async def test_custom_integration_log_level(
|
|||
assert msg["type"] == TYPE_RESULT
|
||||
assert msg["success"]
|
||||
|
||||
assert async_get_domain_config(hass).overrides == {
|
||||
assert hass.data[DATA_LOGGER].overrides == {
|
||||
"homeassistant.components.hue": logging.DEBUG,
|
||||
"custom_components.hue": logging.DEBUG,
|
||||
"some_other_logger": logging.DEBUG,
|
||||
|
@ -182,7 +182,7 @@ async def test_module_log_level(
|
|||
assert msg["type"] == TYPE_RESULT
|
||||
assert msg["success"]
|
||||
|
||||
assert async_get_domain_config(hass).overrides == {
|
||||
assert hass.data[DATA_LOGGER].overrides == {
|
||||
"homeassistant.components.websocket_api": logging.DEBUG,
|
||||
"homeassistant.components.other_component": logging.WARNING,
|
||||
}
|
||||
|
@ -199,7 +199,7 @@ async def test_module_log_level_override(
|
|||
{"logger": {"logs": {"homeassistant.components.websocket_api": "warning"}}},
|
||||
)
|
||||
|
||||
assert async_get_domain_config(hass).overrides == {
|
||||
assert hass.data[DATA_LOGGER].overrides == {
|
||||
"homeassistant.components.websocket_api": logging.WARNING
|
||||
}
|
||||
|
||||
|
@ -218,7 +218,7 @@ async def test_module_log_level_override(
|
|||
assert msg["type"] == TYPE_RESULT
|
||||
assert msg["success"]
|
||||
|
||||
assert async_get_domain_config(hass).overrides == {
|
||||
assert hass.data[DATA_LOGGER].overrides == {
|
||||
"homeassistant.components.websocket_api": logging.ERROR
|
||||
}
|
||||
|
||||
|
@ -237,7 +237,7 @@ async def test_module_log_level_override(
|
|||
assert msg["type"] == TYPE_RESULT
|
||||
assert msg["success"]
|
||||
|
||||
assert async_get_domain_config(hass).overrides == {
|
||||
assert hass.data[DATA_LOGGER].overrides == {
|
||||
"homeassistant.components.websocket_api": logging.DEBUG
|
||||
}
|
||||
|
||||
|
@ -256,6 +256,6 @@ async def test_module_log_level_override(
|
|||
assert msg["type"] == TYPE_RESULT
|
||||
assert msg["success"]
|
||||
|
||||
assert async_get_domain_config(hass).overrides == {
|
||||
assert hass.data[DATA_LOGGER].overrides == {
|
||||
"homeassistant.components.websocket_api": logging.NOTSET
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue