test_borgmatic.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. from flexmock import flexmock
  2. from borgmatic.commands import borgmatic as module
  3. def test_collect_configuration_run_summary_logs_info_for_success():
  4. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  5. flexmock(module).should_receive('run_configuration').and_return([])
  6. args = flexmock(extract=False, list=False)
  7. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  8. assert all(log for log in logs if log.levelno == module.logging.INFO)
  9. def test_collect_configuration_run_summary_logs_info_for_success_with_extract():
  10. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  11. flexmock(module.validate).should_receive('guard_configuration_contains_repository')
  12. flexmock(module).should_receive('run_configuration').and_return([])
  13. args = flexmock(extract=True, list=False, repository='repo')
  14. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  15. assert all(log for log in logs if log.levelno == module.logging.INFO)
  16. def test_collect_configuration_run_summary_logs_critical_for_extract_with_repository_error():
  17. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  18. flexmock(module.validate).should_receive('guard_configuration_contains_repository').and_raise(
  19. ValueError
  20. )
  21. args = flexmock(extract=True, list=False, repository='repo')
  22. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  23. assert any(log for log in logs if log.levelno == module.logging.CRITICAL)
  24. def test_collect_configuration_run_summary_logs_critical_for_list_with_archive_and_repository_error():
  25. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  26. flexmock(module.validate).should_receive('guard_configuration_contains_repository').and_raise(
  27. ValueError
  28. )
  29. args = flexmock(extract=False, list=True, repository='repo', archive='test')
  30. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  31. assert any(log for log in logs if log.levelno == module.logging.CRITICAL)
  32. def test_collect_configuration_run_summary_logs_info_for_success_with_list():
  33. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  34. flexmock(module).should_receive('run_configuration').and_return([])
  35. args = flexmock(extract=False, list=True, repository='repo', archive=None)
  36. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  37. assert all(log for log in logs if log.levelno == module.logging.INFO)
  38. def test_collect_configuration_run_summary_logs_critical_for_parse_error():
  39. flexmock(module.validate).should_receive('parse_configuration').and_raise(ValueError)
  40. args = flexmock(extract=False, list=False)
  41. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  42. assert any(log for log in logs if log.levelno == module.logging.CRITICAL)
  43. def test_collect_configuration_run_summary_logs_critical_for_run_error():
  44. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  45. flexmock(module.validate).should_receive('guard_configuration_contains_repository')
  46. flexmock(module).should_receive('run_configuration').and_raise(ValueError)
  47. args = flexmock(extract=False, list=False)
  48. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  49. assert any(log for log in logs if log.levelno == module.logging.CRITICAL)
  50. def test_collect_configuration_run_summary_logs_critical_for_missing_configs():
  51. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  52. flexmock(module).should_receive('run_configuration').and_return([])
  53. args = flexmock(config_paths=(), extract=False, list=False)
  54. logs = tuple(module.collect_configuration_run_summary_logs(config_filenames=(), args=args))
  55. assert any(log for log in logs if log.levelno == module.logging.CRITICAL)
  56. def test_collect_configuration_run_summary_logs_outputs_merged_json_results():
  57. flexmock(module.validate).should_receive('parse_configuration').and_return(
  58. {'test.yaml': {}, 'test2.yaml': {}}
  59. )
  60. flexmock(module).should_receive('run_configuration').and_return(['foo', 'bar']).and_return(
  61. ['baz']
  62. )
  63. flexmock(module.sys.stdout).should_receive('write').with_args('["foo", "bar", "baz"]').once()
  64. args = flexmock(extract=False, list=False)
  65. tuple(module.collect_configuration_run_summary_logs(('test.yaml', 'test2.yaml'), args=args))