Files
borgmatic/tests/unit/test_verbosity.py
T

99 lines
2.9 KiB
Python

import logging
import pytest
from flexmock import flexmock
from borgmatic import verbosity as module
def insert_logging_mock(log_level):
'''
Mock the isEnabledFor from Python logging.
'''
logging = flexmock(module.logging.Logger)
logging.should_receive('isEnabledFor').replace_with(lambda level: level >= log_level)
logging.should_receive('getEffectiveLevel').replace_with(lambda: log_level)
def test_verbosity_to_log_level_maps_known_verbosity_to_log_level():
flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels')
flexmock(module.logging).ANSWER = module.borgmatic.logger.ANSWER
flexmock(module.logging).DISABLED = module.borgmatic.logger.DISABLED
assert module.verbosity_to_log_level(module.VERBOSITY_ERROR) == logging.ERROR
assert module.verbosity_to_log_level(module.VERBOSITY_ANSWER) == module.borgmatic.logger.ANSWER
assert module.verbosity_to_log_level(module.VERBOSITY_SOME) == logging.INFO
assert module.verbosity_to_log_level(module.VERBOSITY_LOTS) == logging.DEBUG
assert module.verbosity_to_log_level(module.VERBOSITY_DISABLED) == logging.DISABLED
def test_verbosity_to_log_level_maps_unknown_verbosity_to_warning_level():
flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels')
flexmock(module.logging).ANSWER = module.borgmatic.logger.ANSWER
assert module.verbosity_to_log_level('my pants') == logging.WARNING
@pytest.mark.parametrize(
'option_name',
(
'verbosity',
'syslog_verbosity',
'log_file_verbosity',
'monitoring_verbosity',
),
)
def test_get_verbosity_gets_maximum_verbosity_across_configurations(option_name):
assert (
module.get_verbosity(
configs={
'test1.yaml': {option_name: -1},
'test2.yaml': {option_name: 2},
'test3.yaml': {option_name: None},
},
option_name=option_name,
)
== 2
)
@pytest.mark.parametrize(
'option_name',
(
'verbosity',
'syslog_verbosity',
'log_file_verbosity',
'monitoring_verbosity',
),
)
def test_get_verbosity_with_nothing_set_gets_default_verbosity(option_name):
assert (
module.get_verbosity(
configs={
'test1.yaml': {},
'test2.yaml': {'other': 'thing'},
},
option_name=option_name,
)
== module.DEFAULT_VERBOSITIES[option_name]
)
@pytest.mark.parametrize(
'option_name',
(
'verbosity',
'syslog_verbosity',
'log_file_verbosity',
'monitoring_verbosity',
),
)
def test_get_verbosity_with_no_configs_set_gets_default_verbosity(option_name):
assert (
module.get_verbosity(
configs={},
option_name=option_name,
)
== module.DEFAULT_VERBOSITIES[option_name]
)