From ea5a2d8a462cef1b8eb39d485306d6da73b41a0e Mon Sep 17 00:00:00 2001 From: Vandal <86826719+VandalByte@users.noreply.github.com> Date: Tue, 25 Mar 2025 20:39:02 +0530 Subject: [PATCH] add tests for the flags --- borgmatic/borg/recreate.py | 2 +- tests/unit/borg/test_recreate.py | 196 ++++++++++++++++++++++++++++++- 2 files changed, 195 insertions(+), 3 deletions(-) diff --git a/borgmatic/borg/recreate.py b/borgmatic/borg/recreate.py index 8a85908c..a2a45047 100644 --- a/borgmatic/borg/recreate.py +++ b/borgmatic/borg/recreate.py @@ -40,7 +40,6 @@ def recreate_archive( recreate_cmd = ( (local_path, 'recreate') + (('--remote-path', remote_path) if remote_path else ()) - + repo_archive_arg + (('--path', recreate_arguments.path) if recreate_arguments.path else ()) + (('--log-json',) if global_arguments.log_json else ()) + (('--lock-wait', str(lock_wait)) if lock_wait else ()) @@ -57,6 +56,7 @@ def recreate_archive( else () ) + exclude_flags + + repo_archive_arg ) if global_arguments.dry_run: diff --git a/tests/unit/borg/test_recreate.py b/tests/unit/borg/test_recreate.py index 8e229eea..379ecc3a 100644 --- a/tests/unit/borg/test_recreate.py +++ b/tests/unit/borg/test_recreate.py @@ -1,10 +1,10 @@ -# import logging +import logging from flexmock import flexmock from borgmatic.borg import recreate as module -# from ..test_verbosity import insert_logging_mock +from ..test_verbosity import insert_logging_mock # from borgmatic.borg.pattern import Pattern, Pattern_type, Pattern_style, Pattern_source # from borgmatic.borg.create import make_exclude_flags, make_list_filter_flags @@ -62,3 +62,195 @@ def test_recreate_calls_borg_with_required_flags(): remote_path=None, patterns=None, ) + + +def test_recreate_with_remote_path(): + flexmock(module.borgmatic.borg.flags).should_receive('make_repository_flags').and_return( + ('repo::archive',) + ) + flexmock(module).should_receive('write_patterns_file').and_return(None) + flexmock(module).should_receive('make_list_filter_flags').and_return(None) + insert_execute_command_mock(('borg', 'recreate', '--remote-path', 'borg1', 'repo::archive')) + + module.recreate_archive( + repository='repo', + archive='archive', + config={}, + local_borg_version='1.2.3', + recreate_arguments=flexmock(path=None, list=None), + global_arguments=flexmock(dry_run=False, log_json=False), + local_path='borg', + remote_path='borg1', + patterns=None, + ) + + +def test_recreate_with_lock_wait(): + flexmock(module.borgmatic.borg.flags).should_receive('make_repository_flags').and_return( + ('repo::archive',) + ) + flexmock(module).should_receive('write_patterns_file').and_return(None) + flexmock(module).should_receive('make_list_filter_flags').and_return(None) + insert_execute_command_mock(('borg', 'recreate', '--lock-wait', '5', 'repo::archive')) + + module.recreate_archive( + repository='repo', + archive='archive', + config={'lock_wait': '5'}, + local_borg_version='1.2.3', + recreate_arguments=flexmock(path=None, list=None), + global_arguments=flexmock(dry_run=False, log_json=False), + local_path='borg', + patterns=None, + ) + + +def test_recreate_with_log_info(): + flexmock(module.borgmatic.borg.flags).should_receive('make_repository_flags').and_return( + ('repo::archive',) + ) + flexmock(module).should_receive('write_patterns_file').and_return(None) + flexmock(module).should_receive('make_list_filter_flags').and_return(None) + insert_execute_command_mock(('borg', 'recreate', '--info', 'repo::archive')) + + insert_logging_mock(logging.INFO) + + module.recreate_archive( + repository='repo', + archive='archive', + config={}, + local_borg_version='1.2.3', + recreate_arguments=flexmock(path=None, list=None), + global_arguments=flexmock(dry_run=False, log_json=False), + local_path='borg', + patterns=None, + ) + + +def test_recreate_with_log_debug(): + flexmock(module.borgmatic.borg.flags).should_receive('make_repository_flags').and_return( + ('repo::archive',) + ) + flexmock(module).should_receive('write_patterns_file').and_return(None) + flexmock(module).should_receive('make_list_filter_flags').and_return(None) + insert_execute_command_mock(('borg', 'recreate', '--debug', '--show-rc', 'repo::archive')) + insert_logging_mock(logging.DEBUG) + + module.recreate_archive( + repository='repo', + archive='archive', + config={}, + local_borg_version='1.2.3', + recreate_arguments=flexmock(path=None, list=None), + global_arguments=flexmock(dry_run=False, log_json=False), + local_path='borg', + patterns=None, + ) + + +def test_recreate_with_log_json(): + flexmock(module.borgmatic.borg.flags).should_receive('make_repository_flags').and_return( + ('repo::archive',) + ) + flexmock(module).should_receive('write_patterns_file').and_return(None) + flexmock(module).should_receive('make_list_filter_flags').and_return(None) + insert_execute_command_mock(('borg', 'recreate', '--log-json', 'repo::archive')) + + module.recreate_archive( + repository='repo', + archive='archive', + config={}, + local_borg_version='1.2.3', + recreate_arguments=flexmock(path=None, list=None), + global_arguments=flexmock(dry_run=False, log_json=True), + local_path='borg', + patterns=None, + ) + + +def test_recreate_with_path_flag(): + flexmock(module.borgmatic.borg.flags).should_receive('make_repository_flags').and_return( + ('repo::archive',) + ) + flexmock(module).should_receive('write_patterns_file').and_return(None) + flexmock(module).should_receive('make_list_filter_flags').and_return(None) + insert_execute_command_mock(('borg', 'recreate', '--path', '/some/path', 'repo::archive')) + + module.recreate_archive( + repository='repo', + archive='archive', + config={}, + local_borg_version='1.2.3', + recreate_arguments=flexmock(path='/some/path', list=None), + global_arguments=flexmock(dry_run=False, log_json=False), + local_path='borg', + patterns=None, + ) + + +def test_recreate_with_list_filter_flags(): + flexmock(module.borgmatic.borg.flags).should_receive('make_repository_flags').and_return( + ('repo::archive',) + ) + flexmock(module).should_receive('write_patterns_file').and_return(None) + flexmock(module).should_receive('make_list_filter_flags').and_return('AME+-') + insert_execute_command_mock( + ('borg', 'recreate', '--list', '--filter', 'AME+-', 'repo::archive') + ) + + module.recreate_archive( + repository='repo', + archive='archive', + config={}, + local_borg_version='1.2.3', + recreate_arguments=flexmock(path=None, list=True), + global_arguments=flexmock(dry_run=False, log_json=False), + local_path='borg', + patterns=None, + ) + + +def test_recreate_with_patterns_from_flag(): + flexmock(module.borgmatic.borg.flags).should_receive('make_repository_flags').and_return( + ('repo::archive',) + ) + mock_patterns_file = flexmock(name='patterns_file') + flexmock(module).should_receive('write_patterns_file').and_return(mock_patterns_file) + flexmock(module).should_receive('make_list_filter_flags').and_return(None) + insert_execute_command_mock( + ('borg', 'recreate', '--patterns-from', 'patterns_file', 'repo::archive') + ) + + module.recreate_archive( + repository='repo', + archive='archive', + config={}, + local_borg_version='1.2.3', + recreate_arguments=flexmock(path=None, list=None), + global_arguments=flexmock(dry_run=False, log_json=False), + local_path='borg', + patterns=['pattern1', 'pattern2'], + ) + + +def test_recreate_with_exclude_flags(): + flexmock(module.borgmatic.borg.flags).should_receive( + 'make_repository_archive_flags' + ).and_return(('repo::archive',)) + flexmock(module).should_receive('write_patterns_file').and_return(None) + flexmock(module).should_receive('make_list_filter_flags').and_return(None) + # Mock the make_exclude_flags to return a sample exclude flag + flexmock(module).should_receive('make_exclude_flags').and_return(('--exclude', 'pattern')) + + insert_execute_command_mock(('borg', 'recreate', '--exclude', 'pattern', 'repo::archive')) + + module.recreate_archive( + repository='repo', + archive='archive', + config={'exclude_patterns': ['pattern']}, + local_borg_version='1.2.3', + recreate_arguments=flexmock(path=None, list=None), + global_arguments=flexmock(dry_run=False, log_json=False), + local_path='borg', + patterns=None, + )