test_borgmatic.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import subprocess
  2. from flexmock import flexmock
  3. from borgmatic.commands import borgmatic as module
  4. def test_borgmatic_version_matches_news_version():
  5. flexmock(module.collect).should_receive('get_default_config_paths').and_return(['default'])
  6. borgmatic_version = subprocess.check_output(('borgmatic', '--version')).decode('ascii')
  7. news_version = open('NEWS').readline()
  8. assert borgmatic_version == news_version
  9. def test_run_configuration_without_error_pings_monitoring_hooks_start_and_finish():
  10. config = {'repositories': [{'path': 'foo'}]}
  11. arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
  12. flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
  13. flexmock(module).should_receive('run_actions').and_return([])
  14. flexmock(module.dispatch).should_receive('call_hooks')
  15. flexmock(module.dispatch).should_receive('call_hooks').with_args(
  16. 'ping_monitor',
  17. config,
  18. module.dispatch.Hook_type.MONITORING,
  19. 'test.yaml',
  20. module.monitor.State.START,
  21. object,
  22. object,
  23. ).once()
  24. flexmock(module.dispatch).should_receive('call_hooks').with_args(
  25. 'ping_monitor',
  26. config,
  27. module.dispatch.Hook_type.MONITORING,
  28. 'test.yaml',
  29. module.monitor.State.FINISH,
  30. object,
  31. object,
  32. ).once()
  33. list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))
  34. def test_run_configuration_with_action_error_pings_monioring_hooks_start_and_fail():
  35. config = {'repositories': [{'path': 'foo'}]}
  36. arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'create': flexmock()}
  37. flexmock(module.borg_version).should_receive('local_borg_version').and_return(flexmock())
  38. flexmock(module).should_receive('run_actions').and_raise(OSError)
  39. flexmock(module.dispatch).should_receive('call_hooks')
  40. flexmock(module.dispatch).should_receive('call_hooks').with_args(
  41. 'ping_monitor',
  42. config,
  43. module.dispatch.Hook_type.MONITORING,
  44. 'test.yaml',
  45. module.monitor.State.START,
  46. object,
  47. object,
  48. ).once()
  49. flexmock(module.dispatch).should_receive('call_hooks').with_args(
  50. 'ping_monitor',
  51. config,
  52. module.dispatch.Hook_type.MONITORING,
  53. 'test.yaml',
  54. module.monitor.State.FAIL,
  55. object,
  56. object,
  57. ).once()
  58. list(module.run_configuration('test.yaml', config, ['/tmp/test.yaml'], arguments))