mirror of
https://github.com/borgmatic-collective/borgmatic.git
synced 2026-07-22 02:03:01 +02:00
99 lines
2.9 KiB
Python
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]
|
|
)
|