test_version.py 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import logging
  2. import pytest
  3. from flexmock import flexmock
  4. from borgmatic.borg import version as module
  5. from ..test_verbosity import insert_logging_mock
  6. VERSION = '1.2.3'
  7. def insert_execute_command_and_capture_output_mock(
  8. command,
  9. working_directory=None,
  10. borg_local_path='borg',
  11. borg_exit_codes=None,
  12. version_output=f'borg {VERSION}',
  13. ):
  14. flexmock(module.environment).should_receive('make_environment')
  15. flexmock(module.borgmatic.config.paths).should_receive('get_working_directory').and_return(
  16. working_directory,
  17. )
  18. flexmock(module).should_receive('execute_command_and_capture_output').with_args(
  19. command,
  20. environment=None,
  21. working_directory=working_directory,
  22. borg_local_path=borg_local_path,
  23. borg_exit_codes=borg_exit_codes,
  24. ).once().and_return(version_output)
  25. def test_local_borg_version_calls_borg_with_required_parameters():
  26. insert_execute_command_and_capture_output_mock(('borg', '--version'))
  27. flexmock(module.environment).should_receive('make_environment')
  28. assert module.local_borg_version({}) == VERSION
  29. def test_local_borg_version_with_log_info_calls_borg_with_info_parameter():
  30. insert_execute_command_and_capture_output_mock(('borg', '--version', '--info'))
  31. insert_logging_mock(logging.INFO)
  32. flexmock(module.environment).should_receive('make_environment')
  33. assert module.local_borg_version({}) == VERSION
  34. def test_local_borg_version_with_log_debug_calls_borg_with_debug_parameters():
  35. insert_execute_command_and_capture_output_mock(('borg', '--version', '--debug', '--show-rc'))
  36. insert_logging_mock(logging.DEBUG)
  37. flexmock(module.environment).should_receive('make_environment')
  38. assert module.local_borg_version({}) == VERSION
  39. def test_local_borg_version_with_local_borg_path_calls_borg_with_it():
  40. insert_execute_command_and_capture_output_mock(('borg1', '--version'), borg_local_path='borg1')
  41. flexmock(module.environment).should_receive('make_environment')
  42. assert module.local_borg_version({}, 'borg1') == VERSION
  43. def test_local_borg_version_with_borg_exit_codes_calls_using_with_them():
  44. borg_exit_codes = flexmock()
  45. insert_execute_command_and_capture_output_mock(
  46. ('borg', '--version'),
  47. borg_exit_codes=borg_exit_codes,
  48. )
  49. flexmock(module.environment).should_receive('make_environment')
  50. assert module.local_borg_version({'borg_exit_codes': borg_exit_codes}) == VERSION
  51. def test_local_borg_version_with_invalid_version_raises():
  52. insert_execute_command_and_capture_output_mock(('borg', '--version'), version_output='wtf')
  53. flexmock(module.environment).should_receive('make_environment')
  54. with pytest.raises(ValueError):
  55. module.local_borg_version({})
  56. def test_local_borg_version_calls_borg_with_working_directory():
  57. insert_execute_command_and_capture_output_mock(
  58. ('borg', '--version'),
  59. working_directory='/working/dir',
  60. )
  61. flexmock(module.environment).should_receive('make_environment')
  62. assert module.local_borg_version({'working_directory': '/working/dir'}) == VERSION