kiwi-el8/test/unit/logger_test.py
2017-03-07 13:03:10 +01:00

153 lines
4.1 KiB
Python

from mock import patch
from mock import call
from collections import namedtuple
from .test_helper import raises
import logging
from kiwi.logger import (
LoggerSchedulerFilter,
ColorFormatter,
InfoFilter,
DebugFilter,
ErrorFilter,
WarningFilter,
log
)
from kiwi.exceptions import KiwiLogFileSetupFailed
class TestLoggerSchedulerFilter(object):
def setup(self):
self.scheduler_filter = LoggerSchedulerFilter()
def test_filter(self):
MyRecord = namedtuple(
'MyRecord',
'name'
)
ignorables = [
'apscheduler.scheduler',
'apscheduler.executors.default'
]
for ignorable in ignorables:
record = MyRecord(name=ignorable)
assert self.scheduler_filter.filter(record) is False
class TestColorFormatter(object):
def setup(self):
self.color_formatter = ColorFormatter('%(levelname)s: %(message)s')
@patch('logging.Formatter.format')
def test_format(self, mock_format):
MyRecord = namedtuple(
'MyRecord',
'levelname'
)
record = MyRecord(levelname='INFO')
mock_format.return_value = 'message'
self.color_formatter.format(record)
assert 'message' in self.color_formatter.format(record)
class TestInfoFilter(object):
def setup(self):
self.info_filter = InfoFilter()
def test_filter(self):
MyRecord = namedtuple(
'MyRecord',
'levelno'
)
record = MyRecord(levelno=logging.INFO)
assert self.info_filter.filter(record) is True
class TestDebugFilter(object):
def setup(self):
self.debug_filter = DebugFilter()
def test_filter(self):
MyRecord = namedtuple(
'MyRecord',
'levelno'
)
record = MyRecord(levelno=logging.DEBUG)
assert self.debug_filter.filter(record) is True
class TestErrorFilter(object):
def setup(self):
self.error_filter = ErrorFilter()
def test_filter(self):
MyRecord = namedtuple(
'MyRecord',
'levelno'
)
record = MyRecord(levelno=logging.ERROR)
assert self.error_filter.filter(record) is True
class TestWarningFilter(object):
def setup(self):
self.error_filter = WarningFilter()
def test_filter(self):
MyRecord = namedtuple(
'MyRecord',
'levelno'
)
record = MyRecord(levelno=logging.WARNING)
assert self.error_filter.filter(record) is True
class TestLogger(object):
@patch('sys.stdout')
def test_progress(self, mock_stdout):
log.progress(50, 100, 'foo')
mock_stdout.write.assert_called_once_with(
'\rfoo: [#################### ] 50%'
)
mock_stdout.flush.assert_called_once_with()
def test_progress_raise(self):
assert log.progress(50, 0, 'foo') is None
@patch('logging.FileHandler')
def test_set_logfile(self, mock_file_handler):
log.set_logfile('logfile')
mock_file_handler.assert_called_once_with(
filename='logfile', encoding='utf-8'
)
@patch('kiwi.logger.ColorFormatter')
def test_set_color_format(self, mock_color_format):
log.set_color_format()
assert sorted(mock_color_format.call_args_list) == [
call(
'$COLOR[ %(levelname)-8s]: %(asctime)-8s | %(message)s',
'%H:%M:%S'
),
call(
'$COLOR[ %(levelname)-8s]: %(asctime)-8s | %(message)s',
'%H:%M:%S'
),
call(
'$LIGHTCOLOR[ %(levelname)-8s]: %(asctime)-8s | %(message)s',
'%H:%M:%S'
)
]
@raises(KiwiLogFileSetupFailed)
@patch('logging.FileHandler')
def test_set_logfile_raise(self, mock_file_handler):
mock_file_handler.side_effect = KiwiLogFileSetupFailed
log.set_logfile('logfile')
def test_getLogLevel(self):
log.setLogLevel(42)
assert log.getLogLevel() == 42