Files
2026-05-22 12:19:34 -07:00

198 lines
4.7 KiB
Python

import logging
from flexmock import flexmock
from borgmatic.borg import rename as module
def insert_logging_mock(log_level):
'''
Mock the isEnabledFor from Python logging.
'''
logging = flexmock(module.logging.Logger)
logging.should_receive('isEnabledFor').replace_with(lambda level: level >= log_level)
logging.should_receive('getEffectiveLevel').replace_with(lambda: log_level)
def test_make_rename_command_includes_log_info():
insert_logging_mock(logging.INFO)
command = module.make_rename_command(
dry_run=False,
repository_name='repo',
old_archive_name='old_archive',
new_archive_name='new_archive',
config={},
local_borg_version='1.2.3',
local_path='borg',
remote_path=None,
)
assert command == ('borg', 'rename', '--info', '--log-json', 'repo::old_archive', 'new_archive')
def test_make_rename_command_includes_log_debug():
insert_logging_mock(logging.DEBUG)
command = module.make_rename_command(
dry_run=False,
repository_name='repo',
old_archive_name='old_archive',
new_archive_name='new_archive',
config={},
local_borg_version='1.2.3',
local_path='borg',
remote_path=None,
)
assert command == (
'borg',
'rename',
'--debug',
'--show-rc',
'--log-json',
'repo::old_archive',
'new_archive',
)
def test_make_rename_command_includes_dry_run():
insert_logging_mock(logging.WARNING)
command = module.make_rename_command(
dry_run=True,
repository_name='repo',
old_archive_name='old_archive',
new_archive_name='new_archive',
config={},
local_borg_version='1.2.3',
local_path='borg',
remote_path=None,
)
assert command == (
'borg',
'rename',
'--dry-run',
'--log-json',
'repo::old_archive',
'new_archive',
)
def test_make_rename_command_includes_remote_path():
insert_logging_mock(logging.WARNING)
command = module.make_rename_command(
dry_run=False,
repository_name='repo',
old_archive_name='old_archive',
new_archive_name='new_archive',
config={},
local_borg_version='1.2.3',
local_path='borg',
remote_path='borg1',
)
assert command == (
'borg',
'rename',
'--remote-path',
'borg1',
'--log-json',
'repo::old_archive',
'new_archive',
)
def test_make_rename_command_includes_umask():
insert_logging_mock(logging.WARNING)
command = module.make_rename_command(
dry_run=False,
repository_name='repo',
old_archive_name='old_archive',
new_archive_name='new_archive',
config={'umask': '077'},
local_borg_version='1.2.3',
local_path='borg',
remote_path=None,
)
assert command == (
'borg',
'rename',
'--umask',
'077',
'--log-json',
'repo::old_archive',
'new_archive',
)
def test_make_rename_command_includes_log_json():
insert_logging_mock(logging.WARNING)
command = module.make_rename_command(
dry_run=False,
repository_name='repo',
old_archive_name='old_archive',
new_archive_name='new_archive',
config={'log_json': True},
local_borg_version='1.2.3',
local_path='borg',
remote_path=None,
)
assert command == ('borg', 'rename', '--log-json', 'repo::old_archive', 'new_archive')
def test_make_rename_command_includes_lock_wait():
insert_logging_mock(logging.WARNING)
command = module.make_rename_command(
dry_run=False,
repository_name='repo',
old_archive_name='old_archive',
new_archive_name='new_archive',
config={'lock_wait': 5},
local_borg_version='1.2.3',
local_path='borg',
remote_path=None,
)
assert command == (
'borg',
'rename',
'--log-json',
'--lock-wait',
'5',
'repo::old_archive',
'new_archive',
)
def test_make_rename_command_includes_extra_borg_options():
insert_logging_mock(logging.WARNING)
command = module.make_rename_command(
dry_run=False,
repository_name='repo',
old_archive_name='old_archive',
new_archive_name='new_archive',
config={'extra_borg_options': {'rename': '--extra "value with space"'}},
local_borg_version='1.2.3',
local_path='borg',
remote_path=None,
)
assert command == (
'borg',
'rename',
'--log-json',
'--extra',
'value with space',
'repo::old_archive',
'new_archive',
)