From 9ac39df33fc4bd5ed999d3c2eb988dca6da01fae Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 19 Sep 2016 21:12:56 -0700 Subject: [PATCH] Fix logger config validation (#3459) --- homeassistant/components/logger.py | 14 ++++++-------- tests/components/test_logger.py | 6 ++++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/logger.py b/homeassistant/components/logger.py index 58e745e3004..2e772376ae0 100644 --- a/homeassistant/components/logger.py +++ b/homeassistant/components/logger.py @@ -27,14 +27,12 @@ LOGSEVERITY = { LOGGER_DEFAULT = 'default' LOGGER_LOGS = 'logs' -_LOGS_SCHEMA = vol.Schema({ - cv.string: vol.In(vol.Lower(list(LOGSEVERITY))), -}) +_VALID_LOG_LEVEL = vol.All(vol.Upper, vol.In(LOGSEVERITY)) CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ - vol.Required(LOGGER_DEFAULT): vol.In(vol.Lower(list(LOGSEVERITY))), - vol.Required(LOGGER_LOGS): _LOGS_SCHEMA, + vol.Optional(LOGGER_DEFAULT): _VALID_LOG_LEVEL, + vol.Optional(LOGGER_LOGS): vol.Schema({cv.string: _VALID_LOG_LEVEL}), }), }, extra=vol.ALLOW_EXTRA) @@ -65,19 +63,19 @@ class HomeAssistantLogFilter(logging.Filter): def setup(hass, config=None): """Setup the logger component.""" - logfilter = dict() + logfilter = {} # Set default log severity logfilter[LOGGER_DEFAULT] = LOGSEVERITY['DEBUG'] if LOGGER_DEFAULT in config.get(DOMAIN): logfilter[LOGGER_DEFAULT] = LOGSEVERITY[ - config.get(DOMAIN)[LOGGER_DEFAULT].upper() + config.get(DOMAIN)[LOGGER_DEFAULT] ] # Compute log severity for components if LOGGER_LOGS in config.get(DOMAIN): for key, value in config.get(DOMAIN)[LOGGER_LOGS].items(): - config.get(DOMAIN)[LOGGER_LOGS][key] = LOGSEVERITY[value.upper()] + config.get(DOMAIN)[LOGGER_LOGS][key] = LOGSEVERITY[value] logs = OrderedDict( sorted( diff --git a/tests/components/test_logger.py b/tests/components/test_logger.py index 9973106fd14..89577d8535d 100644 --- a/tests/components/test_logger.py +++ b/tests/components/test_logger.py @@ -2,7 +2,9 @@ from collections import namedtuple import logging import unittest +from unittest.mock import MagicMock +from homeassistant.bootstrap import setup_component from homeassistant.components import logger RECORD = namedtuple('record', ('name', 'levelno')) @@ -22,7 +24,7 @@ class TestUpdater(unittest.TestCase): def test_logger_setup(self): """Use logger to create a logging filter.""" - logger.setup(None, self.log_config) + setup_component(MagicMock(), logger.DOMAIN, self.log_config) self.assertTrue(len(logging.root.handlers) > 0) handler = logging.root.handlers[-1] @@ -35,7 +37,7 @@ class TestUpdater(unittest.TestCase): def test_logger_test_filters(self): """Test resulting filter operation.""" - logger.setup(None, self.log_config) + setup_component(MagicMock(), logger.DOMAIN, self.log_config) log_filter = logging.root.handlers[-1].filters[0]