test_break_lock.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import logging
  2. from flexmock import flexmock
  3. from borgmatic.borg import break_lock as module
  4. from ..test_verbosity import insert_logging_mock
  5. def insert_execute_command_mock(command, working_directory=None, borg_exit_codes=None):
  6. flexmock(module.environment).should_receive('make_environment')
  7. flexmock(module.borgmatic.config.paths).should_receive('get_working_directory').and_return(
  8. working_directory,
  9. )
  10. flexmock(module).should_receive('execute_command').with_args(
  11. command,
  12. environment=None,
  13. working_directory=working_directory,
  14. borg_local_path=command[0],
  15. borg_exit_codes=borg_exit_codes,
  16. ).once()
  17. def test_break_lock_calls_borg_with_required_flags():
  18. flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',))
  19. insert_execute_command_mock(('borg', 'break-lock', 'repo'))
  20. module.break_lock(
  21. repository_path='repo',
  22. config={},
  23. local_borg_version='1.2.3',
  24. global_arguments=flexmock(),
  25. )
  26. def test_break_lock_calls_borg_with_local_path():
  27. flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',))
  28. insert_execute_command_mock(('borg1', 'break-lock', 'repo'))
  29. module.break_lock(
  30. repository_path='repo',
  31. config={},
  32. local_borg_version='1.2.3',
  33. global_arguments=flexmock(),
  34. local_path='borg1',
  35. )
  36. def test_break_lock_calls_borg_using_exit_codes():
  37. flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',))
  38. insert_execute_command_mock(('borg1', 'break-lock', 'repo'))
  39. module.break_lock(
  40. repository_path='repo',
  41. config={},
  42. local_borg_version='1.2.3',
  43. global_arguments=flexmock(),
  44. local_path='borg1',
  45. )
  46. def test_break_lock_calls_borg_with_remote_path_flags():
  47. flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',))
  48. insert_execute_command_mock(('borg', 'break-lock', '--remote-path', 'borg1', 'repo'))
  49. module.break_lock(
  50. repository_path='repo',
  51. config={},
  52. local_borg_version='1.2.3',
  53. global_arguments=flexmock(),
  54. remote_path='borg1',
  55. )
  56. def test_break_lock_calls_borg_with_umask_flags():
  57. flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',))
  58. insert_execute_command_mock(('borg', 'break-lock', '--umask', '0770', 'repo'))
  59. module.break_lock(
  60. repository_path='repo',
  61. config={'umask': '0770'},
  62. local_borg_version='1.2.3',
  63. global_arguments=flexmock(),
  64. )
  65. def test_break_lock_calls_borg_with_log_json_flags():
  66. flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',))
  67. insert_execute_command_mock(('borg', 'break-lock', '--log-json', 'repo'))
  68. module.break_lock(
  69. repository_path='repo',
  70. config={'log_json': True},
  71. local_borg_version='1.2.3',
  72. global_arguments=flexmock(),
  73. )
  74. def test_break_lock_calls_borg_with_lock_wait_flags():
  75. flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',))
  76. insert_execute_command_mock(('borg', 'break-lock', '--lock-wait', '5', 'repo'))
  77. module.break_lock(
  78. repository_path='repo',
  79. config={'lock_wait': '5'},
  80. local_borg_version='1.2.3',
  81. global_arguments=flexmock(),
  82. )
  83. def test_break_lock_with_log_info_calls_borg_with_info_parameter():
  84. flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',))
  85. insert_execute_command_mock(('borg', 'break-lock', '--info', 'repo'))
  86. insert_logging_mock(logging.INFO)
  87. module.break_lock(
  88. repository_path='repo',
  89. config={},
  90. local_borg_version='1.2.3',
  91. global_arguments=flexmock(),
  92. )
  93. def test_break_lock_with_log_debug_calls_borg_with_debug_flags():
  94. flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',))
  95. insert_execute_command_mock(('borg', 'break-lock', '--debug', '--show-rc', 'repo'))
  96. insert_logging_mock(logging.DEBUG)
  97. module.break_lock(
  98. repository_path='repo',
  99. config={},
  100. local_borg_version='1.2.3',
  101. global_arguments=flexmock(),
  102. )
  103. def test_break_lock_calls_borg_with_working_directory():
  104. flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',))
  105. insert_execute_command_mock(('borg', 'break-lock', 'repo'), working_directory='/working/dir')
  106. module.break_lock(
  107. repository_path='repo',
  108. config={'working_directory': '/working/dir'},
  109. local_borg_version='1.2.3',
  110. global_arguments=flexmock(),
  111. )