test_umount.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import logging
  2. from flexmock import flexmock
  3. from borgmatic.borg import umount as module
  4. from ..test_verbosity import insert_logging_mock
  5. def insert_execute_command_mock(
  6. command,
  7. borg_local_path='borg',
  8. working_directory=None,
  9. borg_exit_codes=None,
  10. ):
  11. flexmock(module.borgmatic.config.paths).should_receive('get_working_directory').and_return(
  12. working_directory,
  13. )
  14. flexmock(module).should_receive('execute_command').with_args(
  15. command,
  16. working_directory=working_directory,
  17. borg_local_path=borg_local_path,
  18. borg_exit_codes=borg_exit_codes,
  19. ).once()
  20. def test_unmount_archive_calls_borg_with_required_parameters():
  21. insert_execute_command_mock(('borg', 'umount', '/mnt'))
  22. module.unmount_archive(config={}, mount_point='/mnt')
  23. def test_unmount_archive_with_log_info_calls_borg_with_info_parameter():
  24. insert_execute_command_mock(('borg', 'umount', '--info', '/mnt'))
  25. insert_logging_mock(logging.INFO)
  26. module.unmount_archive(config={}, mount_point='/mnt')
  27. def test_unmount_archive_with_log_debug_calls_borg_with_debug_parameters():
  28. insert_execute_command_mock(('borg', 'umount', '--debug', '--show-rc', '/mnt'))
  29. insert_logging_mock(logging.DEBUG)
  30. module.unmount_archive(config={}, mount_point='/mnt')
  31. def test_unmount_archive_calls_borg_with_extra_borg_options():
  32. insert_execute_command_mock(
  33. ('borg', 'umount', '--extra', 'value with space', '/mnt'), borg_local_path='borg'
  34. )
  35. module.unmount_archive(
  36. config={'extra_borg_options': {'umount': '--extra "value with space"'}}, mount_point='/mnt'
  37. )
  38. def test_unmount_archive_calls_borg_with_local_path():
  39. insert_execute_command_mock(('borg1', 'umount', '/mnt'), borg_local_path='borg1')
  40. module.unmount_archive(config={}, mount_point='/mnt', local_path='borg1')
  41. def test_unmount_archive_calls_borg_with_exit_codes():
  42. borg_exit_codes = flexmock()
  43. insert_execute_command_mock(('borg', 'umount', '/mnt'), borg_exit_codes=borg_exit_codes)
  44. module.unmount_archive(config={'borg_exit_codes': borg_exit_codes}, mount_point='/mnt')
  45. def test_unmount_archive_calls_borg_with_working_directory():
  46. insert_execute_command_mock(('borg', 'umount', '/mnt'), working_directory='/working/dir')
  47. module.unmount_archive(config={'working_directory': '/working/dir'}, mount_point='/mnt')