153 lines
4.1 KiB
Python
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
|