Adjust remote ESPHome log subscription level on logging change (#139308)

This commit is contained in:
J. Nick Koston
2025-02-26 07:58:13 +00:00
committed by GitHub
parent 4530fe4bf7
commit eb26a2124b
3 changed files with 79 additions and 11 deletions

View File

@@ -230,6 +230,7 @@ class MockESPHomeDevice:
)
self.on_log_message: Callable[[SubscribeLogsResponse], None]
self.device_info = device_info
self.current_log_level = LogLevel.LOG_LEVEL_NONE
def set_state_callback(self, state_callback: Callable[[EntityState], None]) -> None:
"""Set the state callback."""
@@ -432,9 +433,11 @@ async def _mock_generic_device_entry(
def _subscribe_logs(
on_log_message: Callable[[SubscribeLogsResponse], None], log_level: LogLevel
) -> None:
) -> Callable[[], None]:
"""Subscribe to log messages."""
mock_device.set_on_log_message(on_log_message)
mock_device.current_log_level = log_level
return lambda: None
def _subscribe_voice_assistant(
*,

View File

@@ -57,6 +57,7 @@ async def test_esphome_device_subscribe_logs(
caplog: pytest.LogCaptureFixture,
) -> None:
"""Test configuring a device to subscribe to logs."""
assert await async_setup_component(hass, "logger", {"logger": {}})
entry = MockConfigEntry(
domain=DOMAIN,
data={
@@ -76,6 +77,15 @@ async def test_esphome_device_subscribe_logs(
states=[],
)
await hass.async_block_till_done()
await hass.services.async_call(
"logger",
"set_level",
{"homeassistant.components.esphome": "DEBUG"},
blocking=True,
)
assert device.current_log_level == LogLevel.LOG_LEVEL_VERY_VERBOSE
caplog.set_level(logging.DEBUG)
device.mock_on_log_message(
Mock(level=LogLevel.LOG_LEVEL_INFO, message=b"test_log_message")
@@ -103,6 +113,28 @@ async def test_esphome_device_subscribe_logs(
await hass.async_block_till_done()
assert "test_debug_log_message" in caplog.text
await hass.services.async_call(
"logger",
"set_level",
{"homeassistant.components.esphome": "WARNING"},
blocking=True,
)
assert device.current_log_level == LogLevel.LOG_LEVEL_WARN
await hass.services.async_call(
"logger",
"set_level",
{"homeassistant.components.esphome": "ERROR"},
blocking=True,
)
assert device.current_log_level == LogLevel.LOG_LEVEL_ERROR
await hass.services.async_call(
"logger",
"set_level",
{"homeassistant.components.esphome": "INFO"},
blocking=True,
)
assert device.current_log_level == LogLevel.LOG_LEVEL_CONFIG
async def test_esphome_device_service_calls_not_allowed(
hass: HomeAssistant,