2
0

test_verbosity.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import logging
  2. import pytest
  3. from flexmock import flexmock
  4. from borgmatic import verbosity as module
  5. def insert_logging_mock(log_level):
  6. '''
  7. Mock the isEnabledFor from Python logging.
  8. '''
  9. logging = flexmock(module.logging.Logger)
  10. logging.should_receive('isEnabledFor').replace_with(lambda level: level >= log_level)
  11. logging.should_receive('getEffectiveLevel').replace_with(lambda: log_level)
  12. def test_verbosity_to_log_level_maps_known_verbosity_to_log_level():
  13. flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels')
  14. flexmock(module.logging).ANSWER = module.borgmatic.logger.ANSWER
  15. flexmock(module.logging).DISABLED = module.borgmatic.logger.DISABLED
  16. assert module.verbosity_to_log_level(module.VERBOSITY_ERROR) == logging.ERROR
  17. assert module.verbosity_to_log_level(module.VERBOSITY_ANSWER) == module.borgmatic.logger.ANSWER
  18. assert module.verbosity_to_log_level(module.VERBOSITY_SOME) == logging.INFO
  19. assert module.verbosity_to_log_level(module.VERBOSITY_LOTS) == logging.DEBUG
  20. assert module.verbosity_to_log_level(module.VERBOSITY_DISABLED) == logging.DISABLED
  21. def test_verbosity_to_log_level_maps_unknown_verbosity_to_warning_level():
  22. flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels')
  23. flexmock(module.logging).ANSWER = module.borgmatic.logger.ANSWER
  24. assert module.verbosity_to_log_level('my pants') == logging.WARNING
  25. @pytest.mark.parametrize(
  26. 'option_name',
  27. (
  28. 'verbosity',
  29. 'syslog_verbosity',
  30. 'log_file_verbosity',
  31. 'monitoring_verbosity',
  32. ),
  33. )
  34. def test_get_verbosity_gets_maximum_verbosity_across_configurations(option_name):
  35. assert (
  36. module.get_verbosity(
  37. configs={
  38. 'test1.yaml': {option_name: -1},
  39. 'test2.yaml': {option_name: 2},
  40. 'test3.yaml': {option_name: None},
  41. },
  42. option_name=option_name,
  43. )
  44. == 2
  45. )
  46. @pytest.mark.parametrize(
  47. 'option_name',
  48. (
  49. 'verbosity',
  50. 'syslog_verbosity',
  51. 'log_file_verbosity',
  52. 'monitoring_verbosity',
  53. ),
  54. )
  55. def test_get_verbosity_with_nothing_set_gets_default_verbosity(option_name):
  56. assert (
  57. module.get_verbosity(
  58. configs={
  59. 'test1.yaml': {},
  60. 'test2.yaml': {'other': 'thing'},
  61. },
  62. option_name=option_name,
  63. )
  64. == module.DEFAULT_VERBOSITIES[option_name]
  65. )
  66. @pytest.mark.parametrize(
  67. 'option_name',
  68. (
  69. 'verbosity',
  70. 'syslog_verbosity',
  71. 'log_file_verbosity',
  72. 'monitoring_verbosity',
  73. ),
  74. )
  75. def test_get_verbosity_with_no_configs_set_gets_default_verbosity(option_name):
  76. assert (
  77. module.get_verbosity(
  78. configs={},
  79. option_name=option_name,
  80. )
  81. == module.DEFAULT_VERBOSITIES[option_name]
  82. )