diff --git a/NEWS b/NEWS index 8acb9b3f..788e6354 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,7 @@ 1.8.15.dev0 * #911: Add a "key change-passphrase" action to change the passphrase protecting a repository key. + * #915: Rename repository actions like "rcreate" to more explicit names like "repo-create" for + compatibility with recent Borg 2 changes. 1.8.14 * #896: Fix an error in borgmatic rcreate/init on an empty repository directory with Borg 1.4. diff --git a/borgmatic/actions/borg.py b/borgmatic/actions/borg.py index 6e46596f..dc714700 100644 --- a/borgmatic/actions/borg.py +++ b/borgmatic/actions/borg.py @@ -1,7 +1,7 @@ import logging import borgmatic.borg.borg -import borgmatic.borg.rlist +import borgmatic.borg.repo_list import borgmatic.config.validate logger = logging.getLogger(__name__) @@ -25,7 +25,7 @@ def run_borg( logger.info( f'{repository.get("label", repository["path"])}: Running arbitrary Borg command' ) - archive_name = borgmatic.borg.rlist.resolve_archive_name( + archive_name = borgmatic.borg.repo_list.resolve_archive_name( repository['path'], borg_arguments.archive, config, diff --git a/borgmatic/actions/check.py b/borgmatic/actions/check.py index 26df365c..5180eea1 100644 --- a/borgmatic/actions/check.py +++ b/borgmatic/actions/check.py @@ -12,7 +12,7 @@ import borgmatic.borg.create import borgmatic.borg.environment import borgmatic.borg.extract import borgmatic.borg.list -import borgmatic.borg.rlist +import borgmatic.borg.repo_list import borgmatic.borg.state import borgmatic.config.validate import borgmatic.execute @@ -559,7 +559,7 @@ def spot_check( ) logger.debug(f'{log_label}: {len(source_paths)} total source paths for spot check') - archive = borgmatic.borg.rlist.resolve_archive_name( + archive = borgmatic.borg.repo_list.resolve_archive_name( repository['path'], 'latest', config, diff --git a/borgmatic/actions/config/bootstrap.py b/borgmatic/actions/config/bootstrap.py index 77a96f37..ea3b8b41 100644 --- a/borgmatic/actions/config/bootstrap.py +++ b/borgmatic/actions/config/bootstrap.py @@ -3,7 +3,7 @@ import logging import os import borgmatic.borg.extract -import borgmatic.borg.rlist +import borgmatic.borg.repo_list import borgmatic.config.validate import borgmatic.hooks.command from borgmatic.borg.state import DEFAULT_BORGMATIC_SOURCE_DIRECTORY @@ -33,7 +33,7 @@ def get_config_paths(bootstrap_arguments, global_arguments, local_borg_version): extract_process = borgmatic.borg.extract.extract_archive( global_arguments.dry_run, bootstrap_arguments.repository, - borgmatic.borg.rlist.resolve_archive_name( + borgmatic.borg.repo_list.resolve_archive_name( bootstrap_arguments.repository, bootstrap_arguments.archive, config, @@ -85,7 +85,7 @@ def run_bootstrap(bootstrap_arguments, global_arguments, local_borg_version): borgmatic.borg.extract.extract_archive( global_arguments.dry_run, bootstrap_arguments.repository, - borgmatic.borg.rlist.resolve_archive_name( + borgmatic.borg.repo_list.resolve_archive_name( bootstrap_arguments.repository, bootstrap_arguments.archive, config, diff --git a/borgmatic/actions/delete.py b/borgmatic/actions/delete.py index 8c2324f2..4ecba019 100644 --- a/borgmatic/actions/delete.py +++ b/borgmatic/actions/delete.py @@ -2,8 +2,8 @@ import logging import borgmatic.actions.arguments import borgmatic.borg.delete -import borgmatic.borg.rdelete -import borgmatic.borg.rlist +import borgmatic.borg.repo_delete +import borgmatic.borg.repo_list logger = logging.getLogger(__name__) @@ -26,7 +26,7 @@ def run_delete( logger.answer(f'{repository.get("label", repository["path"])}: Deleting archives') archive_name = ( - borgmatic.borg.rlist.resolve_archive_name( + borgmatic.borg.repo_list.resolve_archive_name( repository['path'], delete_arguments.archive, config, diff --git a/borgmatic/actions/export_tar.py b/borgmatic/actions/export_tar.py index f1937b54..5f9f2a24 100644 --- a/borgmatic/actions/export_tar.py +++ b/borgmatic/actions/export_tar.py @@ -1,7 +1,7 @@ import logging import borgmatic.borg.export_tar -import borgmatic.borg.rlist +import borgmatic.borg.repo_list import borgmatic.config.validate logger = logging.getLogger(__name__) @@ -28,7 +28,7 @@ def run_export_tar( borgmatic.borg.export_tar.export_tar_archive( global_arguments.dry_run, repository['path'], - borgmatic.borg.rlist.resolve_archive_name( + borgmatic.borg.repo_list.resolve_archive_name( repository['path'], export_tar_arguments.archive, config, diff --git a/borgmatic/actions/extract.py b/borgmatic/actions/extract.py index 5d02d4c7..d298ae56 100644 --- a/borgmatic/actions/extract.py +++ b/borgmatic/actions/extract.py @@ -1,7 +1,7 @@ import logging import borgmatic.borg.extract -import borgmatic.borg.rlist +import borgmatic.borg.repo_list import borgmatic.config.validate import borgmatic.hooks.command @@ -39,7 +39,7 @@ def run_extract( borgmatic.borg.extract.extract_archive( global_arguments.dry_run, repository['path'], - borgmatic.borg.rlist.resolve_archive_name( + borgmatic.borg.repo_list.resolve_archive_name( repository['path'], extract_arguments.archive, config, diff --git a/borgmatic/actions/info.py b/borgmatic/actions/info.py index d0ac4a9c..132ebe5b 100644 --- a/borgmatic/actions/info.py +++ b/borgmatic/actions/info.py @@ -3,7 +3,7 @@ import logging import borgmatic.actions.arguments import borgmatic.actions.json import borgmatic.borg.info -import borgmatic.borg.rlist +import borgmatic.borg.repo_list import borgmatic.config.validate logger = logging.getLogger(__name__) @@ -30,7 +30,7 @@ def run_info( logger.answer( f'{repository.get("label", repository["path"])}: Displaying archive summary information' ) - archive_name = borgmatic.borg.rlist.resolve_archive_name( + archive_name = borgmatic.borg.repo_list.resolve_archive_name( repository['path'], info_arguments.archive, config, diff --git a/borgmatic/actions/list.py b/borgmatic/actions/list.py index 96a62047..c4985eef 100644 --- a/borgmatic/actions/list.py +++ b/borgmatic/actions/list.py @@ -31,7 +31,7 @@ def run_list( elif not list_arguments.archive: # pragma: no cover logger.answer(f'{repository.get("label", repository["path"])}: Listing archives') - archive_name = borgmatic.borg.rlist.resolve_archive_name( + archive_name = borgmatic.borg.repo_list.resolve_archive_name( repository['path'], list_arguments.archive, config, diff --git a/borgmatic/actions/mount.py b/borgmatic/actions/mount.py index 86b05859..e50993fe 100644 --- a/borgmatic/actions/mount.py +++ b/borgmatic/actions/mount.py @@ -1,7 +1,7 @@ import logging import borgmatic.borg.mount -import borgmatic.borg.rlist +import borgmatic.borg.repo_list import borgmatic.config.validate logger = logging.getLogger(__name__) @@ -31,7 +31,7 @@ def run_mount( borgmatic.borg.mount.mount_archive( repository['path'], - borgmatic.borg.rlist.resolve_archive_name( + borgmatic.borg.repo_list.resolve_archive_name( repository['path'], mount_arguments.archive, config, diff --git a/borgmatic/actions/rcreate.py b/borgmatic/actions/rcreate.py deleted file mode 100644 index 32cdef40..00000000 --- a/borgmatic/actions/rcreate.py +++ /dev/null @@ -1,41 +0,0 @@ -import logging - -import borgmatic.borg.rcreate -import borgmatic.config.validate - -logger = logging.getLogger(__name__) - - -def run_rcreate( - repository, - config, - local_borg_version, - rcreate_arguments, - global_arguments, - local_path, - remote_path, -): - ''' - Run the "rcreate" action for the given repository. - ''' - if rcreate_arguments.repository and not borgmatic.config.validate.repositories_match( - repository, rcreate_arguments.repository - ): - return - - logger.info(f'{repository.get("label", repository["path"])}: Creating repository') - borgmatic.borg.rcreate.create_repository( - global_arguments.dry_run, - repository['path'], - config, - local_borg_version, - global_arguments, - rcreate_arguments.encryption_mode, - rcreate_arguments.source_repository, - rcreate_arguments.copy_crypt_key, - rcreate_arguments.append_only, - rcreate_arguments.storage_quota, - rcreate_arguments.make_parent_dirs, - local_path=local_path, - remote_path=remote_path, - ) diff --git a/borgmatic/actions/repo_create.py b/borgmatic/actions/repo_create.py new file mode 100644 index 00000000..399efdb6 --- /dev/null +++ b/borgmatic/actions/repo_create.py @@ -0,0 +1,41 @@ +import logging + +import borgmatic.borg.repo_create +import borgmatic.config.validate + +logger = logging.getLogger(__name__) + + +def run_repo_create( + repository, + config, + local_borg_version, + repo_create_arguments, + global_arguments, + local_path, + remote_path, +): + ''' + Run the "repo-create" action for the given repository. + ''' + if repo_create_arguments.repository and not borgmatic.config.validate.repositories_match( + repository, repo_create_arguments.repository + ): + return + + logger.info(f'{repository.get("label", repository["path"])}: Creating repository') + borgmatic.borg.repo_create.create_repository( + global_arguments.dry_run, + repository['path'], + config, + local_borg_version, + global_arguments, + repo_create_arguments.encryption_mode, + repo_create_arguments.source_repository, + repo_create_arguments.copy_crypt_key, + repo_create_arguments.append_only, + repo_create_arguments.storage_quota, + repo_create_arguments.make_parent_dirs, + local_path=local_path, + remote_path=remote_path, + ) diff --git a/borgmatic/actions/rdelete.py b/borgmatic/actions/repo_delete.py similarity index 51% rename from borgmatic/actions/rdelete.py rename to borgmatic/actions/repo_delete.py index 0b531ce0..78d21e5d 100644 --- a/borgmatic/actions/rdelete.py +++ b/borgmatic/actions/repo_delete.py @@ -1,35 +1,35 @@ import logging -import borgmatic.borg.rdelete +import borgmatic.borg.repo_delete logger = logging.getLogger(__name__) -def run_rdelete( +def run_repo_delete( repository, config, local_borg_version, - rdelete_arguments, + repo_delete_arguments, global_arguments, local_path, remote_path, ): ''' - Run the "rdelete" action for the given repository. + Run the "repo-delete" action for the given repository. ''' - if rdelete_arguments.repository is None or borgmatic.config.validate.repositories_match( - repository, rdelete_arguments.repository + if repo_delete_arguments.repository is None or borgmatic.config.validate.repositories_match( + repository, repo_delete_arguments.repository ): logger.answer( f'{repository.get("label", repository["path"])}: Deleting repository' - + (' cache' if rdelete_arguments.cache_only else '') + + (' cache' if repo_delete_arguments.cache_only else '') ) - borgmatic.borg.rdelete.delete_repository( + borgmatic.borg.repo_delete.delete_repository( repository, config, local_borg_version, - rdelete_arguments, + repo_delete_arguments, global_arguments, local_path, remote_path, diff --git a/borgmatic/actions/rinfo.py b/borgmatic/actions/repo_info.py similarity index 57% rename from borgmatic/actions/rinfo.py rename to borgmatic/actions/repo_info.py index 9f04ee60..eef49774 100644 --- a/borgmatic/actions/rinfo.py +++ b/borgmatic/actions/repo_info.py @@ -1,39 +1,39 @@ import logging import borgmatic.actions.json -import borgmatic.borg.rinfo +import borgmatic.borg.repo_info import borgmatic.config.validate logger = logging.getLogger(__name__) -def run_rinfo( +def run_repo_info( repository, config, local_borg_version, - rinfo_arguments, + repo_info_arguments, global_arguments, local_path, remote_path, ): ''' - Run the "rinfo" action for the given repository. + Run the "repo-info" action for the given repository. - If rinfo_arguments.json is True, yield the JSON output from the info for the repository. + If repo_info_arguments.json is True, yield the JSON output from the info for the repository. ''' - if rinfo_arguments.repository is None or borgmatic.config.validate.repositories_match( - repository, rinfo_arguments.repository + if repo_info_arguments.repository is None or borgmatic.config.validate.repositories_match( + repository, repo_info_arguments.repository ): - if not rinfo_arguments.json: + if not repo_info_arguments.json: logger.answer( f'{repository.get("label", repository["path"])}: Displaying repository summary information' ) - json_output = borgmatic.borg.rinfo.display_repository_info( + json_output = borgmatic.borg.repo_info.display_repository_info( repository['path'], config, local_borg_version, - rinfo_arguments=rinfo_arguments, + repo_info_arguments=repo_info_arguments, global_arguments=global_arguments, local_path=local_path, remote_path=remote_path, diff --git a/borgmatic/actions/rlist.py b/borgmatic/actions/repo_list.py similarity index 56% rename from borgmatic/actions/rlist.py rename to borgmatic/actions/repo_list.py index 686838af..dfe9a850 100644 --- a/borgmatic/actions/rlist.py +++ b/borgmatic/actions/repo_list.py @@ -1,37 +1,37 @@ import logging import borgmatic.actions.json -import borgmatic.borg.rlist +import borgmatic.borg.repo_list import borgmatic.config.validate logger = logging.getLogger(__name__) -def run_rlist( +def run_repo_list( repository, config, local_borg_version, - rlist_arguments, + repo_list_arguments, global_arguments, local_path, remote_path, ): ''' - Run the "rlist" action for the given repository. + Run the "repo-list" action for the given repository. - If rlist_arguments.json is True, yield the JSON output from listing the repository. + If repo_list_arguments.json is True, yield the JSON output from listing the repository. ''' - if rlist_arguments.repository is None or borgmatic.config.validate.repositories_match( - repository, rlist_arguments.repository + if repo_list_arguments.repository is None or borgmatic.config.validate.repositories_match( + repository, repo_list_arguments.repository ): - if not rlist_arguments.json: + if not repo_list_arguments.json: logger.answer(f'{repository.get("label", repository["path"])}: Listing repository') - json_output = borgmatic.borg.rlist.list_repository( + json_output = borgmatic.borg.repo_list.list_repository( repository['path'], config, local_borg_version, - rlist_arguments=rlist_arguments, + repo_list_arguments=repo_list_arguments, global_arguments=global_arguments, local_path=local_path, remote_path=remote_path, diff --git a/borgmatic/actions/restore.py b/borgmatic/actions/restore.py index 88fa5dab..2e57726c 100644 --- a/borgmatic/actions/restore.py +++ b/borgmatic/actions/restore.py @@ -5,7 +5,7 @@ import os import borgmatic.borg.extract import borgmatic.borg.list import borgmatic.borg.mount -import borgmatic.borg.rlist +import borgmatic.borg.repo_list import borgmatic.borg.state import borgmatic.config.validate import borgmatic.hooks.dispatch @@ -285,7 +285,7 @@ def run_restore( global_arguments.dry_run, ) - archive_name = borgmatic.borg.rlist.resolve_archive_name( + archive_name = borgmatic.borg.repo_list.resolve_archive_name( repository['path'], restore_arguments.archive, config, diff --git a/borgmatic/borg/check.py b/borgmatic/borg/check.py index 46984b93..bc601795 100644 --- a/borgmatic/borg/check.py +++ b/borgmatic/borg/check.py @@ -2,7 +2,7 @@ import argparse import json import logging -from borgmatic.borg import environment, feature, flags, rinfo +from borgmatic.borg import environment, feature, flags, repo_info from borgmatic.execute import DO_NOT_CAPTURE, execute_command logger = logging.getLogger(__name__) @@ -94,7 +94,7 @@ def get_repository_id( ''' try: return json.loads( - rinfo.display_repository_info( + repo_info.display_repository_info( repository_path, config, local_borg_version, diff --git a/borgmatic/borg/delete.py b/borgmatic/borg/delete.py index e7908ef6..43c18b60 100644 --- a/borgmatic/borg/delete.py +++ b/borgmatic/borg/delete.py @@ -4,7 +4,7 @@ import logging import borgmatic.borg.environment import borgmatic.borg.feature import borgmatic.borg.flags -import borgmatic.borg.rdelete +import borgmatic.borg.repo_delete import borgmatic.execute logger = logging.getLogger(__name__) @@ -88,24 +88,24 @@ def delete_archives( for argument_name in ARCHIVE_RELATED_ARGUMENT_NAMES ): if borgmatic.borg.feature.available( - borgmatic.borg.feature.Feature.RDELETE, local_borg_version + borgmatic.borg.feature.Feature.REPO_DELETE, local_borg_version ): logger.warning( - 'Deleting an entire repository with the delete action is deprecated when using Borg 2.x+. Use the rdelete action instead.' + 'Deleting an entire repository with the delete action is deprecated when using Borg 2.x+. Use the repo-delete action instead.' ) - rdelete_arguments = argparse.Namespace( + repo_delete_arguments = argparse.Namespace( repository=repository['path'], list_archives=delete_arguments.list_archives, force=delete_arguments.force, cache_only=delete_arguments.cache_only, keep_security_info=delete_arguments.keep_security_info, ) - borgmatic.borg.rdelete.delete_repository( + borgmatic.borg.repo_delete.delete_repository( repository, config, local_borg_version, - rdelete_arguments, + repo_delete_arguments, global_arguments, local_path, remote_path, diff --git a/borgmatic/borg/extract.py b/borgmatic/borg/extract.py index e50a487f..c4f4ddf2 100644 --- a/borgmatic/borg/extract.py +++ b/borgmatic/borg/extract.py @@ -3,7 +3,7 @@ import os import subprocess import borgmatic.config.validate -from borgmatic.borg import environment, feature, flags, rlist +from borgmatic.borg import environment, feature, flags, repo_list from borgmatic.execute import DO_NOT_CAPTURE, execute_command logger = logging.getLogger(__name__) @@ -29,7 +29,7 @@ def extract_last_archive_dry_run( verbosity_flags = ('--info',) try: - last_archive_name = rlist.resolve_archive_name( + last_archive_name = repo_list.resolve_archive_name( repository_path, 'latest', config, diff --git a/borgmatic/borg/feature.py b/borgmatic/borg/feature.py index 59085eb0..eb73c009 100644 --- a/borgmatic/borg/feature.py +++ b/borgmatic/borg/feature.py @@ -10,10 +10,10 @@ class Feature(Enum): NUMERIC_IDS = 4 UPLOAD_RATELIMIT = 5 SEPARATE_REPOSITORY_ARCHIVE = 6 - RCREATE = 7 - RLIST = 8 - RINFO = 9 - RDELETE = 10 + REPO_CREATE = 7 + REPO_LIST = 8 + REPO_INFO = 9 + REPO_DELETE = 10 MATCH_ARCHIVES = 11 EXCLUDED_FILES_MINUS = 12 @@ -25,10 +25,10 @@ FEATURE_TO_MINIMUM_BORG_VERSION = { Feature.NUMERIC_IDS: parse('1.2.0b3'), # borg create/extract/mount --numeric-ids Feature.UPLOAD_RATELIMIT: parse('1.2.0b3'), # borg create --upload-ratelimit Feature.SEPARATE_REPOSITORY_ARCHIVE: parse('2.0.0a2'), # --repo with separate archive - Feature.RCREATE: parse('2.0.0a2'), # borg rcreate - Feature.RLIST: parse('2.0.0a2'), # borg rlist - Feature.RINFO: parse('2.0.0a2'), # borg rinfo - Feature.RDELETE: parse('2.0.0a2'), # borg rdelete + Feature.REPO_CREATE: parse('2.0.0a2'), # borg repo-create + Feature.REPO_LIST: parse('2.0.0a2'), # borg repo-list + Feature.REPO_INFO: parse('2.0.0a2'), # borg repo-info + Feature.REPO_DELETE: parse('2.0.0a2'), # borg repo-delete Feature.MATCH_ARCHIVES: parse('2.0.0b3'), # borg --match-archives Feature.EXCLUDED_FILES_MINUS: parse('2.0.0b5'), # --list --filter uses "-" for excludes } diff --git a/borgmatic/borg/list.py b/borgmatic/borg/list.py index 1e2a9f50..ac813207 100644 --- a/borgmatic/borg/list.py +++ b/borgmatic/borg/list.py @@ -4,19 +4,19 @@ import logging import re import borgmatic.logger -from borgmatic.borg import environment, feature, flags, rlist +from borgmatic.borg import environment, feature, flags, repo_list from borgmatic.execute import execute_command, execute_command_and_capture_output logger = logging.getLogger(__name__) -ARCHIVE_FILTER_FLAGS_MOVED_TO_RLIST = ('prefix', 'match_archives', 'sort_by', 'first', 'last') +ARCHIVE_FILTER_FLAGS_MOVED_TO_REPO_LIST = ('prefix', 'match_archives', 'sort_by', 'first', 'last') MAKE_FLAGS_EXCLUDES = ( 'repository', 'archive', 'paths', 'find_paths', -) + ARCHIVE_FILTER_FLAGS_MOVED_TO_RLIST +) + ARCHIVE_FILTER_FLAGS_MOVED_TO_REPO_LIST def make_list_command( @@ -155,12 +155,12 @@ def list_archive( borgmatic.logger.add_custom_log_levels() if not list_arguments.archive and not list_arguments.find_paths: - if feature.available(feature.Feature.RLIST, local_borg_version): + if feature.available(feature.Feature.REPO_LIST, local_borg_version): logger.warning( - 'Omitting the --archive flag on the list action is deprecated when using Borg 2.x+. Use the rlist action instead.' + 'Omitting the --archive flag on the list action is deprecated when using Borg 2.x+. Use the repo-list action instead.' ) - rlist_arguments = argparse.Namespace( + repo_list_arguments = argparse.Namespace( repository=repository_path, short=list_arguments.short, format=list_arguments.format, @@ -171,18 +171,18 @@ def list_archive( first=list_arguments.first, last=list_arguments.last, ) - return rlist.list_repository( + return repo_list.list_repository( repository_path, config, local_borg_version, - rlist_arguments, + repo_list_arguments, global_arguments, local_path, remote_path, ) if list_arguments.archive: - for name in ARCHIVE_FILTER_FLAGS_MOVED_TO_RLIST: + for name in ARCHIVE_FILTER_FLAGS_MOVED_TO_REPO_LIST: if getattr(list_arguments, name, None): logger.warning( f"The --{name.replace('_', '-')} flag on the list action is ignored when using the --archive flag." @@ -199,7 +199,7 @@ def list_archive( # If there are any paths to find (and there's not a single archive already selected), start by # getting a list of archives to search. if list_arguments.find_paths and not list_arguments.archive: - rlist_arguments = argparse.Namespace( + repo_list_arguments = argparse.Namespace( repository=repository_path, short=True, format=None, @@ -214,11 +214,11 @@ def list_archive( # Ask Borg to list archives. Capture its output for use below. archive_lines = tuple( execute_command_and_capture_output( - rlist.make_rlist_command( + repo_list.make_repo_list_command( repository_path, config, local_borg_version, - rlist_arguments, + repo_list_arguments, global_arguments, local_path, remote_path, @@ -242,7 +242,7 @@ def list_archive( # This list call is to show the files in a single archive, not list multiple archives. So # blank out any archive filtering flags. They'll break anyway in Borg 2. - for name in ARCHIVE_FILTER_FLAGS_MOVED_TO_RLIST: + for name in ARCHIVE_FILTER_FLAGS_MOVED_TO_REPO_LIST: setattr(archive_arguments, name, None) main_command = make_list_command( diff --git a/borgmatic/borg/rcreate.py b/borgmatic/borg/repo_create.py similarity index 88% rename from borgmatic/borg/rcreate.py rename to borgmatic/borg/repo_create.py index b76cae01..92cd3d2e 100644 --- a/borgmatic/borg/rcreate.py +++ b/borgmatic/borg/repo_create.py @@ -3,13 +3,13 @@ import json import logging import subprocess -from borgmatic.borg import environment, feature, flags, rinfo +from borgmatic.borg import environment, feature, flags, repo_info from borgmatic.execute import DO_NOT_CAPTURE, execute_command logger = logging.getLogger(__name__) -RINFO_REPOSITORY_NOT_FOUND_EXIT_CODES = {2, 13, 15} +REPO_INFO_REPOSITORY_NOT_FOUND_EXIT_CODES = {2, 13, 15} def create_repository( @@ -39,7 +39,7 @@ def create_repository( ''' try: info_data = json.loads( - rinfo.display_repository_info( + repo_info.display_repository_info( repository_path, config, local_borg_version, @@ -59,17 +59,17 @@ def create_repository( logger.info(f'{repository_path}: Repository already exists. Skipping creation.') return except subprocess.CalledProcessError as error: - if error.returncode not in RINFO_REPOSITORY_NOT_FOUND_EXIT_CODES: + if error.returncode not in REPO_INFO_REPOSITORY_NOT_FOUND_EXIT_CODES: raise lock_wait = config.get('lock_wait') - extra_borg_options = config.get('extra_borg_options', {}).get('rcreate', '') + extra_borg_options = config.get('extra_borg_options', {}).get('repo-create', '') - rcreate_command = ( + repo_create_command = ( (local_path,) + ( - ('rcreate',) - if feature.available(feature.Feature.RCREATE, local_borg_version) + ('repo-create',) + if feature.available(feature.Feature.REPO_CREATE, local_borg_version) else ('init',) ) + (('--encryption', encryption_mode) if encryption_mode else ()) @@ -93,7 +93,7 @@ def create_repository( # Do not capture output here, so as to support interactive prompts. execute_command( - rcreate_command, + repo_create_command, output_file=DO_NOT_CAPTURE, extra_environment=environment.make_environment(config), borg_local_path=local_path, diff --git a/borgmatic/borg/rdelete.py b/borgmatic/borg/repo_delete.py similarity index 68% rename from borgmatic/borg/rdelete.py rename to borgmatic/borg/repo_delete.py index 0bbf4c03..02e5b74f 100644 --- a/borgmatic/borg/rdelete.py +++ b/borgmatic/borg/repo_delete.py @@ -8,26 +8,26 @@ import borgmatic.execute logger = logging.getLogger(__name__) -def make_rdelete_command( +def make_repo_delete_command( repository, config, local_borg_version, - rdelete_arguments, + repo_delete_arguments, global_arguments, local_path, remote_path, ): ''' Given a local or remote repository dict, a configuration dict, the local Borg version, the - arguments to the rdelete action as an argparse.Namespace, and global arguments, return a command - as a tuple to rdelete the entire repository. + arguments to the repo_delete action as an argparse.Namespace, and global arguments, return a command + as a tuple to repo_delete the entire repository. ''' return ( (local_path,) + ( - ('rdelete',) + ('repo-delete',) if borgmatic.borg.feature.available( - borgmatic.borg.feature.Feature.RDELETE, local_borg_version + borgmatic.borg.feature.Feature.REPO_DELETE, local_borg_version ) else ('delete',) ) @@ -37,14 +37,14 @@ def make_rdelete_command( + borgmatic.borg.flags.make_flags('remote-path', remote_path) + borgmatic.borg.flags.make_flags('log-json', global_arguments.log_json) + borgmatic.borg.flags.make_flags('lock-wait', config.get('lock_wait')) - + borgmatic.borg.flags.make_flags('list', rdelete_arguments.list_archives) + + borgmatic.borg.flags.make_flags('list', repo_delete_arguments.list_archives) + ( - (('--force',) + (('--force',) if rdelete_arguments.force >= 2 else ())) - if rdelete_arguments.force + (('--force',) + (('--force',) if repo_delete_arguments.force >= 2 else ())) + if repo_delete_arguments.force else () ) + borgmatic.borg.flags.make_flags_from_arguments( - rdelete_arguments, excludes=('list_archives', 'force', 'repository') + repo_delete_arguments, excludes=('list_archives', 'force', 'repository') ) + borgmatic.borg.flags.make_repository_flags(repository['path'], local_borg_version) ) @@ -54,23 +54,23 @@ def delete_repository( repository, config, local_borg_version, - rdelete_arguments, + repo_delete_arguments, global_arguments, local_path='borg', remote_path=None, ): ''' Given a local or remote repository dict, a configuration dict, the local Borg version, the - arguments to the rdelete action as an argparse.Namespace, global arguments as an - argparse.Namespace, and local and remote Borg paths, rdelete the entire repository. + arguments to the repo_delete action as an argparse.Namespace, global arguments as an + argparse.Namespace, and local and remote Borg paths, repo_delete the entire repository. ''' borgmatic.logger.add_custom_log_levels() - command = make_rdelete_command( + command = make_repo_delete_command( repository, config, local_borg_version, - rdelete_arguments, + repo_delete_arguments, global_arguments, local_path, remote_path, @@ -83,7 +83,7 @@ def delete_repository( # prompt won't work. output_file=( None - if rdelete_arguments.force or rdelete_arguments.cache_only + if repo_delete_arguments.force or repo_delete_arguments.cache_only else borgmatic.execute.DO_NOT_CAPTURE ), extra_environment=borgmatic.borg.environment.make_environment(config), diff --git a/borgmatic/borg/rinfo.py b/borgmatic/borg/repo_info.py similarity index 80% rename from borgmatic/borg/rinfo.py rename to borgmatic/borg/repo_info.py index 4f211ef2..5e83bf6a 100644 --- a/borgmatic/borg/rinfo.py +++ b/borgmatic/borg/repo_info.py @@ -11,14 +11,14 @@ def display_repository_info( repository_path, config, local_borg_version, - rinfo_arguments, + repo_info_arguments, global_arguments, local_path='borg', remote_path=None, ): ''' Given a local or remote repository path, a configuration dict, the local Borg version, the - arguments to the rinfo action, and global arguments as an argparse.Namespace, display summary + arguments to the repo_info action, and global arguments as an argparse.Namespace, display summary information for the Borg repository or return JSON summary information. ''' borgmatic.logger.add_custom_log_levels() @@ -27,31 +27,31 @@ def display_repository_info( full_command = ( (local_path,) + ( - ('rinfo',) - if feature.available(feature.Feature.RINFO, local_borg_version) + ('repo-info',) + if feature.available(feature.Feature.REPO_INFO, local_borg_version) else ('info',) ) + ( ('--info',) - if logger.getEffectiveLevel() == logging.INFO and not rinfo_arguments.json + if logger.getEffectiveLevel() == logging.INFO and not repo_info_arguments.json else () ) + ( ('--debug', '--show-rc') - if logger.isEnabledFor(logging.DEBUG) and not rinfo_arguments.json + if logger.isEnabledFor(logging.DEBUG) and not repo_info_arguments.json else () ) + flags.make_flags('remote-path', remote_path) + flags.make_flags('log-json', global_arguments.log_json) + flags.make_flags('lock-wait', lock_wait) - + (('--json',) if rinfo_arguments.json else ()) + + (('--json',) if repo_info_arguments.json else ()) + flags.make_repository_flags(repository_path, local_borg_version) ) extra_environment = environment.make_environment(config) borg_exit_codes = config.get('borg_exit_codes') - if rinfo_arguments.json: + if repo_info_arguments.json: return execute_command_and_capture_output( full_command, extra_environment=extra_environment, diff --git a/borgmatic/borg/rlist.py b/borgmatic/borg/repo_list.py similarity index 78% rename from borgmatic/borg/rlist.py rename to borgmatic/borg/repo_list.py index 0ab10c57..cc5dcf19 100644 --- a/borgmatic/borg/rlist.py +++ b/borgmatic/borg/repo_list.py @@ -31,7 +31,11 @@ def resolve_archive_name( full_command = ( ( local_path, - 'rlist' if feature.available(feature.Feature.RLIST, local_borg_version) else 'list', + ( + 'repo-list' + if feature.available(feature.Feature.REPO_LIST, local_borg_version) + else 'list' + ), ) + flags.make_flags('remote-path', remote_path) + flags.make_flags('log-json', global_arguments.log_json) @@ -60,33 +64,37 @@ def resolve_archive_name( MAKE_FLAGS_EXCLUDES = ('repository', 'prefix', 'match_archives') -def make_rlist_command( +def make_repo_list_command( repository_path, config, local_borg_version, - rlist_arguments, + repo_list_arguments, global_arguments, local_path='borg', remote_path=None, ): ''' Given a local or remote repository path, a configuration dict, the local Borg version, the - arguments to the rlist action, global arguments as an argparse.Namespace instance, and local and + arguments to the repo_list action, global arguments as an argparse.Namespace instance, and local and remote Borg paths, return a command as a tuple to list archives with a repository. ''' return ( ( local_path, - 'rlist' if feature.available(feature.Feature.RLIST, local_borg_version) else 'list', + ( + 'repo-list' + if feature.available(feature.Feature.REPO_LIST, local_borg_version) + else 'list' + ), ) + ( ('--info',) - if logger.getEffectiveLevel() == logging.INFO and not rlist_arguments.json + if logger.getEffectiveLevel() == logging.INFO and not repo_list_arguments.json else () ) + ( ('--debug', '--show-rc') - if logger.isEnabledFor(logging.DEBUG) and not rlist_arguments.json + if logger.isEnabledFor(logging.DEBUG) and not repo_list_arguments.json else () ) + flags.make_flags('remote-path', remote_path) @@ -94,20 +102,20 @@ def make_rlist_command( + flags.make_flags('lock-wait', config.get('lock_wait')) + ( ( - flags.make_flags('match-archives', f'sh:{rlist_arguments.prefix}*') + flags.make_flags('match-archives', f'sh:{repo_list_arguments.prefix}*') if feature.available(feature.Feature.MATCH_ARCHIVES, local_borg_version) - else flags.make_flags('glob-archives', f'{rlist_arguments.prefix}*') + else flags.make_flags('glob-archives', f'{repo_list_arguments.prefix}*') ) - if rlist_arguments.prefix + if repo_list_arguments.prefix else ( flags.make_match_archives_flags( - rlist_arguments.match_archives or config.get('match_archives'), + repo_list_arguments.match_archives or config.get('match_archives'), config.get('archive_name_format'), local_borg_version, ) ) ) - + flags.make_flags_from_arguments(rlist_arguments, excludes=MAKE_FLAGS_EXCLUDES) + + flags.make_flags_from_arguments(repo_list_arguments, excludes=MAKE_FLAGS_EXCLUDES) + flags.make_repository_flags(repository_path, local_borg_version) ) @@ -116,7 +124,7 @@ def list_repository( repository_path, config, local_borg_version, - rlist_arguments, + repo_list_arguments, global_arguments, local_path='borg', remote_path=None, @@ -130,20 +138,20 @@ def list_repository( borgmatic.logger.add_custom_log_levels() borg_environment = environment.make_environment(config) - main_command = make_rlist_command( + main_command = make_repo_list_command( repository_path, config, local_borg_version, - rlist_arguments, + repo_list_arguments, global_arguments, local_path, remote_path, ) - json_command = make_rlist_command( + json_command = make_repo_list_command( repository_path, config, local_borg_version, - argparse.Namespace(**dict(rlist_arguments.__dict__, json=True)), + argparse.Namespace(**dict(repo_list_arguments.__dict__, json=True)), global_arguments, local_path, remote_path, @@ -157,7 +165,7 @@ def list_repository( borg_exit_codes=borg_exit_codes, ) - if rlist_arguments.json: + if repo_list_arguments.json: return json_listing flags.warn_for_aggressive_archive_flags(json_command, json_listing) diff --git a/borgmatic/commands/arguments.py b/borgmatic/commands/arguments.py index 6349d2e1..f27ead30 100644 --- a/borgmatic/commands/arguments.py +++ b/borgmatic/commands/arguments.py @@ -6,7 +6,7 @@ from argparse import ArgumentParser from borgmatic.config import collect ACTION_ALIASES = { - 'rcreate': ['init', '-I'], + 'repo-create': ['rcreate', 'init', '-I'], 'prune': ['-p'], 'compact': [], 'create': ['-C'], @@ -18,10 +18,10 @@ ACTION_ALIASES = { 'mount': ['-m'], 'umount': ['-u'], 'restore': ['-r'], - 'rdelete': [], - 'rlist': [], + 'repo-delete': ['rdelete'], + 'repo-list': ['rlist'], 'list': ['-l'], - 'rinfo': [], + 'repo-info': ['rinfo'], 'info': ['-i'], 'transfer': [], 'break-lock': [], @@ -402,51 +402,51 @@ def make_parsers(): metavar='', help='Specify zero or more actions. Defaults to create, prune, compact, and check. Use --help with action for details:', ) - rcreate_parser = action_parsers.add_parser( - 'rcreate', - aliases=ACTION_ALIASES['rcreate'], + repo_create_parser = action_parsers.add_parser( + 'repo-create', + aliases=ACTION_ALIASES['repo-create'], help='Create a new, empty Borg repository', description='Create a new, empty Borg repository', add_help=False, ) - rcreate_group = rcreate_parser.add_argument_group('rcreate arguments') - rcreate_group.add_argument( + repo_create_group = repo_create_parser.add_argument_group('repo-create arguments') + repo_create_group.add_argument( '-e', '--encryption', dest='encryption_mode', help='Borg repository encryption mode', required=True, ) - rcreate_group.add_argument( + repo_create_group.add_argument( '--source-repository', '--other-repo', metavar='KEY_REPOSITORY', help='Path to an existing Borg repository whose key material should be reused [Borg 2.x+ only]', ) - rcreate_group.add_argument( + repo_create_group.add_argument( '--repository', help='Path of the new repository to create (must be already specified in a borgmatic configuration file), defaults to the configured repository if there is only one, quoted globs supported', ) - rcreate_group.add_argument( + repo_create_group.add_argument( '--copy-crypt-key', action='store_true', help='Copy the crypt key used for authenticated encryption from the source repository, defaults to a new random key [Borg 2.x+ only]', ) - rcreate_group.add_argument( + repo_create_group.add_argument( '--append-only', action='store_true', help='Create an append-only repository', ) - rcreate_group.add_argument( + repo_create_group.add_argument( '--storage-quota', help='Create a repository with a fixed storage quota', ) - rcreate_group.add_argument( + repo_create_group.add_argument( '--make-parent-dirs', action='store_true', help='Create any missing parent directories of the repository directory', ) - rcreate_group.add_argument( + repo_create_group.add_argument( '-h', '--help', action='help', help='Show this help message and exit' ) @@ -1070,40 +1070,40 @@ def make_parsers(): ) umount_group.add_argument('-h', '--help', action='help', help='Show this help message and exit') - rdelete_parser = action_parsers.add_parser( - 'rdelete', - aliases=ACTION_ALIASES['rdelete'], + repo_delete_parser = action_parsers.add_parser( + 'repo-delete', + aliases=ACTION_ALIASES['repo-delete'], help='Delete an entire repository (with Borg 1.2+, you must run compact afterwards to actually free space)', description='Delete an entire repository (with Borg 1.2+, you must run compact afterwards to actually free space)', add_help=False, ) - rdelete_group = rdelete_parser.add_argument_group('delete arguments') - rdelete_group.add_argument( + repo_delete_group = repo_delete_parser.add_argument_group('delete arguments') + repo_delete_group.add_argument( '--repository', help='Path of repository to delete, defaults to the configured repository if there is only one, quoted globs supported', ) - rdelete_group.add_argument( + repo_delete_group.add_argument( '--list', dest='list_archives', action='store_true', help='Show details for the archives in the given repository', ) - rdelete_group.add_argument( + repo_delete_group.add_argument( '--force', action='count', help='Force deletion of corrupted archives, can be given twice if once does not work', ) - rdelete_group.add_argument( + repo_delete_group.add_argument( '--cache-only', action='store_true', help='Delete only the local cache for the given repository', ) - rdelete_group.add_argument( + repo_delete_group.add_argument( '--keep-security-info', action='store_true', help='Do not delete the local security info when deleting a repository', ) - rdelete_group.add_argument( + repo_delete_group.add_argument( '-h', '--help', action='help', help='Show this help message and exit' ) @@ -1161,65 +1161,67 @@ def make_parsers(): '-h', '--help', action='help', help='Show this help message and exit' ) - rlist_parser = action_parsers.add_parser( - 'rlist', - aliases=ACTION_ALIASES['rlist'], + repo_list_parser = action_parsers.add_parser( + 'repo-list', + aliases=ACTION_ALIASES['repo-list'], help='List repository', description='List the archives in a repository', add_help=False, ) - rlist_group = rlist_parser.add_argument_group('rlist arguments') - rlist_group.add_argument( + repo_list_group = repo_list_parser.add_argument_group('repo-list arguments') + repo_list_group.add_argument( '--repository', help='Path of repository to list, defaults to the configured repositories, quoted globs supported', ) - rlist_group.add_argument( + repo_list_group.add_argument( '--short', default=False, action='store_true', help='Output only archive names' ) - rlist_group.add_argument('--format', help='Format for archive listing') - rlist_group.add_argument( + repo_list_group.add_argument('--format', help='Format for archive listing') + repo_list_group.add_argument( '--json', default=False, action='store_true', help='Output results as JSON' ) - rlist_group.add_argument( + repo_list_group.add_argument( '-P', '--prefix', help='Deprecated. Only list archive names starting with this prefix' ) - rlist_group.add_argument( + repo_list_group.add_argument( '-a', '--match-archives', '--glob-archives', metavar='PATTERN', help='Only list archive names matching this pattern', ) - rlist_group.add_argument( + repo_list_group.add_argument( '--sort-by', metavar='KEYS', help='Comma-separated list of sorting keys' ) - rlist_group.add_argument( + repo_list_group.add_argument( '--first', metavar='N', help='List first N archives after other filters are applied' ) - rlist_group.add_argument( + repo_list_group.add_argument( '--last', metavar='N', help='List last N archives after other filters are applied' ) - rlist_group.add_argument( + repo_list_group.add_argument( '--oldest', metavar='TIMESPAN', help='List archives within a specified time range starting from the timestamp of the oldest archive (e.g. 7d or 12m) [Borg 2.x+ only]', ) - rlist_group.add_argument( + repo_list_group.add_argument( '--newest', metavar='TIMESPAN', help='List archives within a time range that ends at timestamp of the newest archive and starts a specified time range ago (e.g. 7d or 12m) [Borg 2.x+ only]', ) - rlist_group.add_argument( + repo_list_group.add_argument( '--older', metavar='TIMESPAN', help='List archives that are older than the specified time range (e.g. 7d or 12m) from the current time [Borg 2.x+ only]', ) - rlist_group.add_argument( + repo_list_group.add_argument( '--newer', metavar='TIMESPAN', help='List archives that are newer than the specified time range (e.g. 7d or 12m) from the current time [Borg 2.x+ only]', ) - rlist_group.add_argument('-h', '--help', action='help', help='Show this help message and exit') + repo_list_group.add_argument( + '-h', '--help', action='help', help='Show this help message and exit' + ) list_parser = action_parsers.add_parser( 'list', @@ -1288,22 +1290,24 @@ def make_parsers(): ) list_group.add_argument('-h', '--help', action='help', help='Show this help message and exit') - rinfo_parser = action_parsers.add_parser( - 'rinfo', - aliases=ACTION_ALIASES['rinfo'], + repo_info_parser = action_parsers.add_parser( + 'repo-info', + aliases=ACTION_ALIASES['repo-info'], help='Show repository summary information such as disk space used', description='Show repository summary information such as disk space used', add_help=False, ) - rinfo_group = rinfo_parser.add_argument_group('rinfo arguments') - rinfo_group.add_argument( + repo_info_group = repo_info_parser.add_argument_group('repo-info arguments') + repo_info_group.add_argument( '--repository', help='Path of repository to show info for, defaults to the configured repository if there is only one, quoted globs supported', ) - rinfo_group.add_argument( + repo_info_group.add_argument( '--json', dest='json', default=False, action='store_true', help='Output results as JSON' ) - rinfo_group.add_argument('-h', '--help', action='help', help='Show this help message and exit') + repo_info_group.add_argument( + '-h', '--help', action='help', help='Show this help message and exit' + ) info_parser = action_parsers.add_parser( 'info', @@ -1515,9 +1519,9 @@ def parse_arguments(*unparsed_arguments): ) if ( - ('list' in arguments and 'rinfo' in arguments and arguments['list'].json) + ('list' in arguments and 'repo-info' in arguments and arguments['list'].json) or ('list' in arguments and 'info' in arguments and arguments['list'].json) - or ('rinfo' in arguments and 'info' in arguments and arguments['rinfo'].json) + or ('repo-info' in arguments and 'info' in arguments and arguments['repo-info'].json) ): raise ValueError('With the --json flag, multiple actions cannot be used together.') @@ -1535,9 +1539,11 @@ def parse_arguments(*unparsed_arguments): 'With the list action, only one of --prefix or --match-archives flags can be used.' ) - if 'rlist' in arguments and (arguments['rlist'].prefix and arguments['rlist'].match_archives): + if 'repo-list' in arguments and ( + arguments['repo-list'].prefix and arguments['repo-list'].match_archives + ): raise ValueError( - 'With the rlist action, only one of --prefix or --match-archives flags can be used.' + 'With the repo-list action, only one of --prefix or --match-archives flags can be used.' ) if 'info' in arguments and ( diff --git a/borgmatic/commands/borgmatic.py b/borgmatic/commands/borgmatic.py index dd9d0339..f483a36e 100644 --- a/borgmatic/commands/borgmatic.py +++ b/borgmatic/commands/borgmatic.py @@ -27,11 +27,11 @@ import borgmatic.actions.info import borgmatic.actions.list import borgmatic.actions.mount import borgmatic.actions.prune -import borgmatic.actions.rcreate -import borgmatic.actions.rdelete +import borgmatic.actions.repo_create +import borgmatic.actions.repo_delete +import borgmatic.actions.repo_info +import borgmatic.actions.repo_list import borgmatic.actions.restore -import borgmatic.actions.rinfo -import borgmatic.actions.rlist import borgmatic.actions.transfer import borgmatic.commands.completion.bash import borgmatic.commands.completion.fish @@ -307,8 +307,8 @@ def run_actions( ) for action_name, action_arguments in arguments.items(): - if action_name == 'rcreate' and action_name not in skip_actions: - borgmatic.actions.rcreate.run_rcreate( + if action_name == 'repo-create' and action_name not in skip_actions: + borgmatic.actions.repo_create.run_repo_create( repository, config, local_borg_version, @@ -422,8 +422,8 @@ def run_actions( local_path, remote_path, ) - elif action_name == 'rlist' and action_name not in skip_actions: - yield from borgmatic.actions.rlist.run_rlist( + elif action_name == 'repo-list' and action_name not in skip_actions: + yield from borgmatic.actions.repo_list.run_repo_list( repository, config, local_borg_version, @@ -442,8 +442,8 @@ def run_actions( local_path, remote_path, ) - elif action_name == 'rinfo' and action_name not in skip_actions: - yield from borgmatic.actions.rinfo.run_rinfo( + elif action_name == 'repo-info' and action_name not in skip_actions: + yield from borgmatic.actions.repo_info.run_repo_info( repository, config, local_borg_version, @@ -502,8 +502,8 @@ def run_actions( local_path, remote_path, ) - elif action_name == 'rdelete' and action_name not in skip_actions: - borgmatic.actions.rdelete.run_rdelete( + elif action_name == 'repo-delete' and action_name not in skip_actions: + borgmatic.actions.repo_delete.run_repo_delete( repository, config, local_borg_version, diff --git a/borgmatic/config/schema.yaml b/borgmatic/config/schema.yaml index 79e2aac5..6412b2b8 100644 --- a/borgmatic/config/schema.yaml +++ b/borgmatic/config/schema.yaml @@ -396,8 +396,8 @@ properties: Name of the archive. Borg placeholders can be used. See the output of "borg help placeholders" for details. Defaults to "{hostname}-{now:%Y-%m-%dT%H:%M:%S.%f}". When running actions like - rlist, info, or check, borgmatic automatically tries to match only - archives created with this name format. + repo-list, info, or check, borgmatic automatically tries to match + only archives created with this name format. example: "{hostname}-documents-{now}" match_archives: type: string @@ -749,7 +749,7 @@ properties: items: type: string enum: - - rcreate + - repo-create - transfer - prune - compact @@ -761,11 +761,11 @@ properties: - export-tar - mount - umount - - rdelete + - repo-delete - restore - - rlist + - repo-list - list - - rinfo + - repo-info - info - break-lock - key diff --git a/docs/Dockerfile b/docs/Dockerfile index c3100c77..fb78414e 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -4,7 +4,7 @@ COPY . /app RUN apk add --no-cache py3-pip py3-ruamel.yaml py3-ruamel.yaml.clib RUN pip install --break-system-packages --no-cache /app && generate-borgmatic-config && chmod +r /etc/borgmatic/config.yaml RUN borgmatic --help > /command-line.txt \ - && for action in rcreate transfer create prune compact check delete extract config "config bootstrap" "config generate" "config validate" export-tar mount umount rdelete restore rlist list rinfo info break-lock "key export" "key change-passphrase" borg; do \ + && for action in repo-create transfer create prune compact check delete extract config "config bootstrap" "config generate" "config validate" export-tar mount umount repo-delete restore repo-list list repo-info info break-lock "key export" "key change-passphrase" borg; do \ echo -e "\n--------------------------------------------------------------------------------\n" >> /command-line.txt \ && borgmatic $action --help >> /command-line.txt; done RUN /app/docs/fetch-contributors >> /contributors.html diff --git a/docs/how-to/backup-your-databases.md b/docs/how-to/backup-your-databases.md index 96eb081b..fbabc7b8 100644 --- a/docs/how-to/backup-your-databases.md +++ b/docs/how-to/backup-your-databases.md @@ -311,13 +311,14 @@ borgmatic does not currently create a database upon restore. To restore a database dump from an archive, use the `borgmatic restore` action. But the first step is to figure out which archive to restore from. A -good way to do that is to use the `rlist` action: +good way to do that is to use the `repo-list` action: ```bash -borgmatic rlist +borgmatic repo-list ``` -(No borgmatic `rlist` action? Try `list` instead or upgrade borgmatic!) +(No borgmatic `repo-list` action? Try `rlist` or `list` instead or upgrade +borgmatic!) That should yield output looking something like: diff --git a/docs/how-to/extract-a-backup.md b/docs/how-to/extract-a-backup.md index 6e0d04b8..5a9f6836 100644 --- a/docs/how-to/extract-a-backup.md +++ b/docs/how-to/extract-a-backup.md @@ -9,13 +9,14 @@ eleventyNavigation: When the worst happens—or you want to test your backups—the first step is to figure out which archive to extract. A good way to do that is to use the -`rlist` action: +`repo-list` action: ```bash -borgmatic rlist +borgmatic repo-list ``` -(No borgmatic `rlist` action? Try `list` instead or upgrade borgmatic!) +(No borgmatic `repo-list` action? Try `rlist` or `list` instead or upgrade +borgmatic!) That should yield output looking something like: diff --git a/docs/how-to/inspect-your-backups.md b/docs/how-to/inspect-your-backups.md index e3ce5982..5a9372d8 100644 --- a/docs/how-to/inspect-your-backups.md +++ b/docs/how-to/inspect-your-backups.md @@ -62,13 +62,13 @@ for available values. (No borgmatic `list` or `info` actions? Upgrade borgmatic!) -New in borgmatic version 1.7.0 -There are also `rlist` and `rinfo` actions for displaying repository +New in borgmatic version 1.8.15 +There are also `repo-list` and `repo-info` actions for displaying repository information with Borg 2.x: ```bash -borgmatic rlist -borgmatic rinfo +borgmatic repo-list +borgmatic repo-info ``` See the [borgmatic command-line diff --git a/docs/how-to/make-per-application-backups.md b/docs/how-to/make-per-application-backups.md index d91ecc84..3856b565 100644 --- a/docs/how-to/make-per-application-backups.md +++ b/docs/how-to/make-per-application-backups.md @@ -92,10 +92,10 @@ timestamp in a particular format. New in version 1.7.11 borgmatic uses the `archive_name_format` option to automatically limit which archives get used for actions operating on multiple archives. This prevents, for -instance, duplicate archives from showing up in `rlist` or `info` results—even -if the same repository appears in multiple borgmatic configuration files. To -take advantage of this feature, use a different `archive_name_format` in each -configuration file. +instance, duplicate archives from showing up in `repo-list` or `info` +results—even if the same repository appears in multiple borgmatic +configuration files. To take advantage of this feature, use a different +`archive_name_format` in each configuration file. Under the hood, borgmatic accomplishes this by substituting globs for certain ephemeral data placeholders in your `archive_name_format`—and using the result @@ -113,7 +113,7 @@ this option in the `storage:` section of your configuration. borgmatic considers `{now}` an emphemeral data placeholder that will probably change per archive, while `{hostname}` won't. So it turns the example value into `{hostname}-user-data-*` and applies it to filter down the set of -archives used for actions like `rlist`, `info`, `prune`, `check`, etc. +archives used for actions like `repo-list`, `info`, `prune`, `check`, etc. The end result is that when borgmatic runs the actions for a particular application-specific configuration file, it only operates on the archives diff --git a/docs/how-to/monitor-your-backups.md b/docs/how-to/monitor-your-backups.md index 37dff2af..80311728 100644 --- a/docs/how-to/monitor-your-backups.md +++ b/docs/how-to/monitor-your-backups.md @@ -566,8 +566,8 @@ Resend Notification every X times = 1 ## Scripting borgmatic To consume the output of borgmatic in other software, you can include an -optional `--json` flag with `create`, `rlist`, `rinfo`, or `info` to get the -output formatted as JSON. +optional `--json` flag with `create`, `repo-list`, `repo-info`, or `info` to +get the output formatted as JSON. Note that when you specify the `--json` flag, Borg's other non-JSON output is suppressed so as not to interfere with the captured JSON. Also note that JSON @@ -578,7 +578,7 @@ output only shows up at the console and not in syslog. All borgmatic actions that accept an `--archive` flag allow you to specify an archive name of `latest`. This lets you get the latest archive without having -to first run `borgmatic rlist` manually, which can be handy in automated +to first run `borgmatic repo-list` manually, which can be handy in automated scripts. Here's an example: ```bash diff --git a/docs/how-to/run-arbitrary-borg-commands.md b/docs/how-to/run-arbitrary-borg-commands.md index 9ff51e39..95bee028 100644 --- a/docs/how-to/run-arbitrary-borg-commands.md +++ b/docs/how-to/run-arbitrary-borg-commands.md @@ -45,10 +45,14 @@ be preferred though for most uses.) You can also specify Borg options for relevant commands. For instance: ```bash -borgmatic borg rlist --short +borgmatic borg repo-list --short ``` -This runs Borg's `rlist` command once on each configured borgmatic repository. +(No borgmatic `repo-list` action? Try `rlist` or `list` instead or upgrade +borgmatic!) + +This runs Borg's `repo-list` command once on each configured borgmatic +repository. What if you only want to run Borg on a single configured borgmatic repository when you've got several configured? Not a problem. The `--repository` argument diff --git a/docs/how-to/set-up-backups.md b/docs/how-to/set-up-backups.md index ea563a94..b9f0eec0 100644 --- a/docs/how-to/set-up-backups.md +++ b/docs/how-to/set-up-backups.md @@ -214,11 +214,11 @@ command like the following with Borg 1.x: sudo borgmatic init --encryption repokey ``` -New in borgmatic version 1.7.0 +New in borgmatic version 1.8.15 Or, with Borg 2.x: ```bash -sudo borgmatic rcreate --encryption repokey-aes-ocb +sudo borgmatic repo-create --encryption repokey-aes-ocb ``` (Note that `repokey-chacha20-poly1305` may be faster than `repokey-aes-ocb` on diff --git a/docs/how-to/upgrade.md b/docs/how-to/upgrade.md index b0257c51..65e15c15 100644 --- a/docs/how-to/upgrade.md +++ b/docs/how-to/upgrade.md @@ -93,7 +93,7 @@ Borg releases require additional steps that borgmatic can help with. ### Borg 1.2 to 2.0 -New in borgmatic version 1.7.0 +New in borgmatic version 1.8.15 Upgrading Borg from 1.2 to 2.0 requires manually upgrading your existing Borg 1 repositories before use with Borg or borgmatic. Here's how you can accomplish that. @@ -125,11 +125,11 @@ option was found in the `location:` section of your configuration. Prior to version 1.7.10 Omit the `path:` portion of the `repositories` list. -Then, run the `rcreate` action (formerly `init`) to create that new Borg 2 +Then, run the `repo-create` action (formerly `init`) to create that new Borg 2 repository: ```bash -borgmatic rcreate --verbosity 1 --encryption repokey-blake2-aes-ocb \ +borgmatic repo-create --verbosity 1 --encryption repokey-blake2-aes-ocb \ --source-repository original.borg --repository upgraded.borg ``` @@ -146,12 +146,12 @@ means the encryption value you specified doesn't correspond to your source repository's chunk ID algorithm. In that case, try not using `blake2`: ```bash -borgmatic rcreate --verbosity 1 --encryption repokey-aes-ocb \ +borgmatic repo-create --verbosity 1 --encryption repokey-aes-ocb \ --source-repository original.borg --repository upgraded.borg ``` Read about [Borg encryption -modes](https://borgbackup.readthedocs.io/en/2.0.0b8/usage/rcreate.html#encryption-mode-tldr) +modes](https://borgbackup.readthedocs.io/en/latest/usage/repo-create.html) for more details. To transfer data from your original Borg 1 repository to your newly created diff --git a/tests/end-to-end/test_borgmatic.py b/tests/end-to-end/test_borgmatic.py index 7eac73a6..61688570 100644 --- a/tests/end-to-end/test_borgmatic.py +++ b/tests/end-to-end/test_borgmatic.py @@ -44,7 +44,7 @@ def test_borgmatic_command(): generate_configuration(config_path, repository_path) subprocess.check_call( - f'borgmatic -v 2 --config {config_path} rcreate --encryption repokey'.split(' ') + f'borgmatic -v 2 --config {config_path} repo-create --encryption repokey'.split(' ') ) # Run borgmatic to generate a backup archive, and then list it to make sure it exists. diff --git a/tests/end-to-end/test_database.py b/tests/end-to-end/test_database.py index a307a9a1..b5337a75 100644 --- a/tests/end-to-end/test_database.py +++ b/tests/end-to-end/test_database.py @@ -363,7 +363,16 @@ def test_database_dump_and_restore(): select_test_tables(config) subprocess.check_call( - ['borgmatic', '-v', '2', '--config', config_path, 'rcreate', '--encryption', 'repokey'] + [ + 'borgmatic', + '-v', + '2', + '--config', + config_path, + 'repo-create', + '--encryption', + 'repokey', + ] ) # Run borgmatic to generate a backup archive including database dumps. @@ -410,7 +419,16 @@ def test_database_dump_and_restore_with_restore_cli_flags(): select_test_tables(config) subprocess.check_call( - ['borgmatic', '-v', '2', '--config', config_path, 'rcreate', '--encryption', 'repokey'] + [ + 'borgmatic', + '-v', + '2', + '--config', + config_path, + 'repo-create', + '--encryption', + 'repokey', + ] ) # Run borgmatic to generate a backup archive including a database dump. @@ -480,7 +498,16 @@ def test_database_dump_and_restore_with_restore_configuration_options(): select_test_tables(config) subprocess.check_call( - ['borgmatic', '-v', '2', '--config', config_path, 'rcreate', '--encryption', 'repokey'] + [ + 'borgmatic', + '-v', + '2', + '--config', + config_path, + 'repo-create', + '--encryption', + 'repokey', + ] ) # Run borgmatic to generate a backup archive including a database dump. @@ -533,7 +560,16 @@ def test_database_dump_and_restore_with_directory_format(): select_test_tables(config) subprocess.check_call( - ['borgmatic', '-v', '2', '--config', config_path, 'rcreate', '--encryption', 'repokey'] + [ + 'borgmatic', + '-v', + '2', + '--config', + config_path, + 'repo-create', + '--encryption', + 'repokey', + ] ) # Run borgmatic to generate a backup archive including a database dump. @@ -568,7 +604,16 @@ def test_database_dump_with_error_causes_borgmatic_to_exit(): ) subprocess.check_call( - ['borgmatic', '-v', '2', '--config', config_path, 'rcreate', '--encryption', 'repokey'] + [ + 'borgmatic', + '-v', + '2', + '--config', + config_path, + 'repo-create', + '--encryption', + 'repokey', + ] ) # Run borgmatic with a config override such that the database dump fails. diff --git a/tests/end-to-end/test_override.py b/tests/end-to-end/test_override.py index f0aa8a88..a4fb08a7 100644 --- a/tests/end-to-end/test_override.py +++ b/tests/end-to-end/test_override.py @@ -39,7 +39,7 @@ def test_override_get_normalized(): generate_configuration(config_path, repository_path) subprocess.check_call( - f'borgmatic -v 2 --config {config_path} rcreate --encryption repokey'.split(' ') + f'borgmatic -v 2 --config {config_path} repo-create --encryption repokey'.split(' ') ) # Run borgmatic with an override structured for an outdated config file format. If diff --git a/tests/integration/borg/test_commands.py b/tests/integration/borg/test_commands.py index c46f6459..4e9261e8 100644 --- a/tests/integration/borg/test_commands.py +++ b/tests/integration/borg/test_commands.py @@ -7,7 +7,7 @@ import borgmatic.borg.info import borgmatic.borg.list import borgmatic.borg.mount import borgmatic.borg.prune -import borgmatic.borg.rlist +import borgmatic.borg.repo_list import borgmatic.borg.transfer import borgmatic.commands.arguments @@ -133,14 +133,14 @@ def test_make_list_command_does_not_duplicate_flags_or_raise(): assert_command_does_not_duplicate_flags(command) -def test_make_rlist_command_does_not_duplicate_flags_or_raise(): - arguments = borgmatic.commands.arguments.parse_arguments('rlist')['rlist'] +def test_make_repo_list_command_does_not_duplicate_flags_or_raise(): + arguments = borgmatic.commands.arguments.parse_arguments('repo-list')['repo-list'] for argument_name in dir(arguments): if argument_name.startswith('_'): continue - command = borgmatic.borg.rlist.make_rlist_command( + command = borgmatic.borg.repo_list.make_repo_list_command( 'repo', {}, '2.3.4', diff --git a/tests/integration/commands/test_arguments.py b/tests/integration/commands/test_arguments.py index 392082ff..4399c867 100644 --- a/tests/integration/commands/test_arguments.py +++ b/tests/integration/commands/test_arguments.py @@ -49,8 +49,8 @@ def test_parse_arguments_with_action_after_config_path_omits_aliased_action(): global_arguments = arguments['global'] assert global_arguments.config_paths == ['myconfig'] - assert 'rcreate' in arguments - assert arguments['rcreate'].encryption_mode == 'repokey' + assert 'repo-create' in arguments + assert arguments['repo-create'].encryption_mode == 'repokey' def test_parse_arguments_with_action_and_positional_arguments_after_config_path_omits_action_and_arguments(): @@ -438,7 +438,7 @@ def test_parse_arguments_with_list_flag_but_no_relevant_action_raises_value_erro flexmock(module.collect).should_receive('get_default_config_paths').and_return(['default']) with pytest.raises(SystemExit): - module.parse_arguments('--list', 'rcreate') + module.parse_arguments('--list', 'repo-create') def test_parse_arguments_disallows_list_with_progress_for_create_action(): @@ -469,18 +469,18 @@ def test_parse_arguments_disallows_json_with_both_list_and_info(): module.parse_arguments('list', 'info', '--json') -def test_parse_arguments_disallows_json_with_both_list_and_rinfo(): +def test_parse_arguments_disallows_json_with_both_list_and_repo_info(): flexmock(module.collect).should_receive('get_default_config_paths').and_return(['default']) with pytest.raises(ValueError): - module.parse_arguments('list', 'rinfo', '--json') + module.parse_arguments('list', 'repo-info', '--json') -def test_parse_arguments_disallows_json_with_both_rinfo_and_info(): +def test_parse_arguments_disallows_json_with_both_repo_info_and_info(): flexmock(module.collect).should_receive('get_default_config_paths').and_return(['default']) with pytest.raises(ValueError): - module.parse_arguments('rinfo', 'info', '--json') + module.parse_arguments('repo-info', 'info', '--json') def test_parse_arguments_disallows_transfer_with_both_archive_and_match_archives(): @@ -505,11 +505,11 @@ def test_parse_arguments_disallows_list_with_both_prefix_and_match_archives(): module.parse_arguments('list', '--prefix', 'foo', '--match-archives', 'sh:*bar') -def test_parse_arguments_disallows_rlist_with_both_prefix_and_match_archives(): +def test_parse_arguments_disallows_repo_list_with_both_prefix_and_match_archives(): flexmock(module.collect).should_receive('get_default_config_paths').and_return(['default']) with pytest.raises(ValueError): - module.parse_arguments('rlist', '--prefix', 'foo', '--match-archives', 'sh:*bar') + module.parse_arguments('repo-list', '--prefix', 'foo', '--match-archives', 'sh:*bar') def test_parse_arguments_disallows_info_with_both_archive_and_match_archives(): diff --git a/tests/unit/actions/config/test_bootstrap.py b/tests/unit/actions/config/test_bootstrap.py index d93c8f05..8d419ecd 100644 --- a/tests/unit/actions/config/test_bootstrap.py +++ b/tests/unit/actions/config/test_bootstrap.py @@ -23,7 +23,7 @@ def test_get_config_paths_returns_list_of_config_paths(): flexmock(module.borgmatic.borg.extract).should_receive('extract_archive').and_return( extract_process ) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( 'archive' ) assert module.get_config_paths(bootstrap_arguments, global_arguments, local_borg_version) == [ @@ -57,7 +57,7 @@ def test_get_config_paths_translates_ssh_command_argument_to_config(): object, extract_to_stdout=True, ).and_return(extract_process) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').with_args( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').with_args( 'repo', 'archive', {'ssh_command': 'ssh -i key'}, object, object ).and_return('archive') assert module.get_config_paths(bootstrap_arguments, global_arguments, local_borg_version) == [ @@ -80,7 +80,7 @@ def test_get_config_paths_with_missing_manifest_raises_value_error(): flexmock(module.borgmatic.borg.extract).should_receive('extract_archive').and_return( extract_process ) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( 'archive' ) @@ -105,7 +105,7 @@ def test_get_config_paths_with_broken_json_raises_value_error(): flexmock(module.borgmatic.borg.extract).should_receive('extract_archive').and_return( extract_process ) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( 'archive' ) @@ -130,7 +130,7 @@ def test_get_config_paths_with_json_missing_key_raises_value_error(): flexmock(module.borgmatic.borg.extract).should_receive('extract_archive').and_return( extract_process ) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( 'archive' ) @@ -161,7 +161,7 @@ def test_run_bootstrap_does_not_raise(): flexmock(module.borgmatic.borg.extract).should_receive('extract_archive').and_return( extract_process ).once() - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( 'archive' ) @@ -201,7 +201,7 @@ def test_run_bootstrap_translates_ssh_command_argument_to_config(): strip_components=1, progress=False, ).and_return(extract_process).once() - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').with_args( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').with_args( 'repo', 'archive', {'ssh_command': 'ssh -i key'}, object, object ).and_return('archive') diff --git a/tests/unit/actions/test_borg.py b/tests/unit/actions/test_borg.py index 6cabe0d9..fd8aa28e 100644 --- a/tests/unit/actions/test_borg.py +++ b/tests/unit/actions/test_borg.py @@ -6,7 +6,7 @@ from borgmatic.actions import borg as module def test_run_borg_does_not_raise(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( flexmock() ) flexmock(module.borgmatic.borg.borg).should_receive('run_arbitrary_borg') diff --git a/tests/unit/actions/test_check.py b/tests/unit/actions/test_check.py index ee812788..64e0dbfe 100644 --- a/tests/unit/actions/test_check.py +++ b/tests/unit/actions/test_check.py @@ -932,7 +932,7 @@ def test_spot_check_with_count_delta_greater_than_count_tolerance_percentage_err flexmock(module).should_receive('collect_spot_check_source_paths').and_return( ('/foo', '/bar', '/baz', '/quux') ) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( 'archive' ) flexmock(module).should_receive('collect_spot_check_archive_paths').and_return( @@ -963,7 +963,7 @@ def test_spot_check_with_failing_percentage_greater_than_data_tolerance_percenta flexmock(module).should_receive('collect_spot_check_source_paths').and_return( ('/foo', '/bar', '/baz', '/quux') ) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( 'archive' ) flexmock(module).should_receive('collect_spot_check_archive_paths').and_return(('/foo', '/bar')) @@ -995,7 +995,7 @@ def test_spot_check_with_high_enough_tolerances_does_not_raise(): flexmock(module).should_receive('collect_spot_check_source_paths').and_return( ('/foo', '/bar', '/baz', '/quux') ) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( 'archive' ) flexmock(module).should_receive('collect_spot_check_archive_paths').and_return(('/foo', '/bar')) diff --git a/tests/unit/actions/test_delete.py b/tests/unit/actions/test_delete.py index 7db17749..539c6068 100644 --- a/tests/unit/actions/test_delete.py +++ b/tests/unit/actions/test_delete.py @@ -6,7 +6,7 @@ from borgmatic.actions import delete as module def test_run_delete_does_not_raise(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name') + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name') flexmock(module.borgmatic.actions.arguments).should_receive('update_arguments').and_return( flexmock() ) @@ -26,7 +26,7 @@ def test_run_delete_does_not_raise(): def test_run_delete_without_archive_does_not_raise(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name') + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name') flexmock(module.borgmatic.actions.arguments).should_receive('update_arguments').and_return( flexmock() ) diff --git a/tests/unit/actions/test_info.py b/tests/unit/actions/test_info.py index 442eb999..460a6de1 100644 --- a/tests/unit/actions/test_info.py +++ b/tests/unit/actions/test_info.py @@ -6,7 +6,7 @@ from borgmatic.actions import info as module def test_run_info_does_not_raise(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( flexmock() ) flexmock(module.borgmatic.actions.arguments).should_receive('update_arguments').and_return( @@ -31,7 +31,7 @@ def test_run_info_does_not_raise(): def test_run_info_produces_json(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( flexmock() ) flexmock(module.borgmatic.actions.arguments).should_receive('update_arguments').and_return( diff --git a/tests/unit/actions/test_list.py b/tests/unit/actions/test_list.py index c300d9f2..99b1ebf9 100644 --- a/tests/unit/actions/test_list.py +++ b/tests/unit/actions/test_list.py @@ -6,7 +6,7 @@ from borgmatic.actions import list as module def test_run_list_does_not_raise(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( flexmock() ) flexmock(module.borgmatic.actions.arguments).should_receive('update_arguments').and_return( @@ -33,7 +33,7 @@ def test_run_list_does_not_raise(): def test_run_list_produces_json(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( flexmock() ) flexmock(module.borgmatic.actions.arguments).should_receive('update_arguments').and_return( diff --git a/tests/unit/actions/test_rcreate.py b/tests/unit/actions/test_repo_create.py similarity index 73% rename from tests/unit/actions/test_rcreate.py rename to tests/unit/actions/test_repo_create.py index 0de8d5df..8bb350b1 100644 --- a/tests/unit/actions/test_rcreate.py +++ b/tests/unit/actions/test_repo_create.py @@ -1,12 +1,12 @@ from flexmock import flexmock -from borgmatic.actions import rcreate as module +from borgmatic.actions import repo_create as module -def test_run_rcreate_does_not_raise(): +def test_run_repo_create_does_not_raise(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rcreate).should_receive('create_repository') + flexmock(module.borgmatic.borg.repo_create).should_receive('create_repository') arguments = flexmock( encryption_mode=flexmock(), source_repository=flexmock(), @@ -17,23 +17,23 @@ def test_run_rcreate_does_not_raise(): make_parent_dirs=flexmock(), ) - module.run_rcreate( + module.run_repo_create( repository={'path': 'repo'}, config={}, local_borg_version=None, - rcreate_arguments=arguments, + repo_create_arguments=arguments, global_arguments=flexmock(dry_run=False), local_path=None, remote_path=None, ) -def test_run_rcreate_bails_if_repository_does_not_match(): +def test_run_repo_create_bails_if_repository_does_not_match(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return( False ) - flexmock(module.borgmatic.borg.rcreate).should_receive('create_repository').never() + flexmock(module.borgmatic.borg.repo_create).should_receive('create_repository').never() arguments = flexmock( encryption_mode=flexmock(), source_repository=flexmock(), @@ -44,11 +44,11 @@ def test_run_rcreate_bails_if_repository_does_not_match(): make_parent_dirs=flexmock(), ) - module.run_rcreate( + module.run_repo_create( repository={'path': 'repo'}, config={}, local_borg_version=None, - rcreate_arguments=arguments, + repo_create_arguments=arguments, global_arguments=flexmock(dry_run=False), local_path=None, remote_path=None, diff --git a/tests/unit/actions/test_rdelete.py b/tests/unit/actions/test_repo_delete.py similarity index 64% rename from tests/unit/actions/test_rdelete.py rename to tests/unit/actions/test_repo_delete.py index ce16e950..8ae443b0 100644 --- a/tests/unit/actions/test_rdelete.py +++ b/tests/unit/actions/test_repo_delete.py @@ -1,40 +1,40 @@ from flexmock import flexmock -from borgmatic.actions import rdelete as module +from borgmatic.actions import repo_delete as module -def test_run_rdelete_does_not_raise(): +def test_run_repo_delete_does_not_raise(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) flexmock(module.borgmatic.actions.arguments).should_receive('update_arguments').and_return( flexmock() ) - flexmock(module.borgmatic.borg.rdelete).should_receive('delete_repository') + flexmock(module.borgmatic.borg.repo_delete).should_receive('delete_repository') - module.run_rdelete( + module.run_repo_delete( repository={'path': 'repo'}, config={}, local_borg_version=None, - rdelete_arguments=flexmock(repository=flexmock(), cache_only=False), + repo_delete_arguments=flexmock(repository=flexmock(), cache_only=False), global_arguments=flexmock(), local_path=None, remote_path=None, ) -def test_run_rdelete_with_cache_only_does_not_raise(): +def test_run_repo_delete_with_cache_only_does_not_raise(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) flexmock(module.borgmatic.actions.arguments).should_receive('update_arguments').and_return( flexmock() ) - flexmock(module.borgmatic.borg.rdelete).should_receive('delete_repository') + flexmock(module.borgmatic.borg.repo_delete).should_receive('delete_repository') - module.run_rdelete( + module.run_repo_delete( repository={'path': 'repo'}, config={}, local_borg_version=None, - rdelete_arguments=flexmock(repository=flexmock(), cache_only=True), + repo_delete_arguments=flexmock(repository=flexmock(), cache_only=True), global_arguments=flexmock(), local_path=None, remote_path=None, diff --git a/tests/unit/actions/test_rinfo.py b/tests/unit/actions/test_repo_info.py similarity index 61% rename from tests/unit/actions/test_rinfo.py rename to tests/unit/actions/test_repo_info.py index 18e8cf86..ba9a1703 100644 --- a/tests/unit/actions/test_rinfo.py +++ b/tests/unit/actions/test_repo_info.py @@ -1,20 +1,20 @@ from flexmock import flexmock -from borgmatic.actions import rinfo as module +from borgmatic.actions import repo_info as module -def test_run_rinfo_does_not_raise(): +def test_run_repo_info_does_not_raise(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rinfo).should_receive('display_repository_info') - rinfo_arguments = flexmock(repository=flexmock(), json=False) + flexmock(module.borgmatic.borg.repo_info).should_receive('display_repository_info') + repo_info_arguments = flexmock(repository=flexmock(), json=False) list( - module.run_rinfo( + module.run_repo_info( repository={'path': 'repo'}, config={}, local_borg_version=None, - rinfo_arguments=rinfo_arguments, + repo_info_arguments=repo_info_arguments, global_arguments=flexmock(log_json=False), local_path=None, remote_path=None, @@ -22,22 +22,22 @@ def test_run_rinfo_does_not_raise(): ) -def test_run_rinfo_parses_json(): +def test_run_repo_info_parses_json(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rinfo).should_receive('display_repository_info').and_return( + flexmock(module.borgmatic.borg.repo_info).should_receive('display_repository_info').and_return( flexmock() ) parsed_json = flexmock() flexmock(module.borgmatic.actions.json).should_receive('parse_json').and_return(parsed_json) - rinfo_arguments = flexmock(repository=flexmock(), json=True) + repo_info_arguments = flexmock(repository=flexmock(), json=True) list( - module.run_rinfo( + module.run_repo_info( repository={'path': 'repo'}, config={}, local_borg_version=None, - rinfo_arguments=rinfo_arguments, + repo_info_arguments=repo_info_arguments, global_arguments=flexmock(log_json=False), local_path=None, remote_path=None, diff --git a/tests/unit/actions/test_rlist.py b/tests/unit/actions/test_repo_list.py similarity index 60% rename from tests/unit/actions/test_rlist.py rename to tests/unit/actions/test_repo_list.py index 34c1f75c..7ff7f626 100644 --- a/tests/unit/actions/test_rlist.py +++ b/tests/unit/actions/test_repo_list.py @@ -1,20 +1,20 @@ from flexmock import flexmock -from borgmatic.actions import rlist as module +from borgmatic.actions import repo_list as module -def test_run_rlist_does_not_raise(): +def test_run_repo_list_does_not_raise(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rlist).should_receive('list_repository') - rlist_arguments = flexmock(repository=flexmock(), json=False) + flexmock(module.borgmatic.borg.repo_list).should_receive('list_repository') + repo_list_arguments = flexmock(repository=flexmock(), json=False) list( - module.run_rlist( + module.run_repo_list( repository={'path': 'repo'}, config={}, local_borg_version=None, - rlist_arguments=rlist_arguments, + repo_list_arguments=repo_list_arguments, global_arguments=flexmock(), local_path=None, remote_path=None, @@ -22,20 +22,22 @@ def test_run_rlist_does_not_raise(): ) -def test_run_rlist_produces_json(): +def test_run_repo_list_produces_json(): flexmock(module.logger).answer = lambda message: None flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) - flexmock(module.borgmatic.borg.rlist).should_receive('list_repository').and_return(flexmock()) + flexmock(module.borgmatic.borg.repo_list).should_receive('list_repository').and_return( + flexmock() + ) parsed_json = flexmock() flexmock(module.borgmatic.actions.json).should_receive('parse_json').and_return(parsed_json) - rlist_arguments = flexmock(repository=flexmock(), json=True) + repo_list_arguments = flexmock(repository=flexmock(), json=True) assert list( - module.run_rlist( + module.run_repo_list( repository={'path': 'repo'}, config={}, local_borg_version=None, - rlist_arguments=rlist_arguments, + repo_list_arguments=repo_list_arguments, global_arguments=flexmock(), local_path=None, remote_path=None, diff --git a/tests/unit/actions/test_restore.py b/tests/unit/actions/test_restore.py index f6d3075d..89a48d28 100644 --- a/tests/unit/actions/test_restore.py +++ b/tests/unit/actions/test_restore.py @@ -233,7 +233,7 @@ def test_run_restore_restores_each_data_source(): flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) flexmock(module.borgmatic.hooks.dispatch).should_receive('call_hooks_even_if_unconfigured') - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( flexmock() ) flexmock(module).should_receive('collect_archive_data_source_names').and_return(flexmock()) @@ -315,7 +315,7 @@ def test_run_restore_restores_data_source_configured_with_all_name(): flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) flexmock(module.borgmatic.hooks.dispatch).should_receive('call_hooks_even_if_unconfigured') - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( flexmock() ) flexmock(module).should_receive('collect_archive_data_source_names').and_return(flexmock()) @@ -393,7 +393,7 @@ def test_run_restore_skips_missing_data_source(): flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) flexmock(module.borgmatic.hooks.dispatch).should_receive('call_hooks_even_if_unconfigured') - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( flexmock() ) flexmock(module).should_receive('collect_archive_data_source_names').and_return(flexmock()) @@ -472,7 +472,7 @@ def test_run_restore_restores_data_sources_from_different_hooks(): flexmock(module.borgmatic.config.validate).should_receive('repositories_match').and_return(True) flexmock(module.borgmatic.hooks.dispatch).should_receive('call_hooks_even_if_unconfigured') - flexmock(module.borgmatic.borg.rlist).should_receive('resolve_archive_name').and_return( + flexmock(module.borgmatic.borg.repo_list).should_receive('resolve_archive_name').and_return( flexmock() ) flexmock(module).should_receive('collect_archive_data_source_names').and_return(flexmock()) diff --git a/tests/unit/borg/test_check.py b/tests/unit/borg/test_check.py index 5e335f09..6740f6fa 100644 --- a/tests/unit/borg/test_check.py +++ b/tests/unit/borg/test_check.py @@ -284,7 +284,7 @@ def test_make_check_name_flags_with_repository_and_data_checks_does_not_return_r def test_get_repository_id_with_valid_json_does_not_raise(): config = {} - flexmock(module.rinfo).should_receive('display_repository_info').and_return( + flexmock(module.repo_info).should_receive('display_repository_info').and_return( '{"repository": {"id": "repo"}}' ) @@ -300,7 +300,7 @@ def test_get_repository_id_with_valid_json_does_not_raise(): def test_get_repository_id_with_json_error_raises(): config = {} - flexmock(module.rinfo).should_receive('display_repository_info').and_return( + flexmock(module.repo_info).should_receive('display_repository_info').and_return( '{"unexpected": {"id": "repo"}}' ) @@ -317,7 +317,7 @@ def test_get_repository_id_with_json_error_raises(): def test_get_repository_id_with_missing_json_keys_raises(): config = {} - flexmock(module.rinfo).should_receive('display_repository_info').and_return('{invalid JSON') + flexmock(module.repo_info).should_receive('display_repository_info').and_return('{invalid JSON') with pytest.raises(ValueError): module.get_repository_id( diff --git a/tests/unit/borg/test_delete.py b/tests/unit/borg/test_delete.py index 1e132614..36c81099 100644 --- a/tests/unit/borg/test_delete.py +++ b/tests/unit/borg/test_delete.py @@ -266,7 +266,7 @@ def test_make_delete_command_includes_match_archives(): def test_delete_archives_with_archive_calls_borg_delete(): flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels') - flexmock(module.borgmatic.borg.rdelete).should_receive('delete_repository').never() + flexmock(module.borgmatic.borg.repo_delete).should_receive('delete_repository').never() flexmock(module).should_receive('make_delete_command').and_return(flexmock()) flexmock(module.borgmatic.borg.environment).should_receive('make_environment').and_return( flexmock() @@ -284,7 +284,7 @@ def test_delete_archives_with_archive_calls_borg_delete(): def test_delete_archives_with_match_archives_calls_borg_delete(): flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels') - flexmock(module.borgmatic.borg.rdelete).should_receive('delete_repository').never() + flexmock(module.borgmatic.borg.repo_delete).should_receive('delete_repository').never() flexmock(module).should_receive('make_delete_command').and_return(flexmock()) flexmock(module.borgmatic.borg.environment).should_receive('make_environment').and_return( flexmock() @@ -303,7 +303,7 @@ def test_delete_archives_with_match_archives_calls_borg_delete(): @pytest.mark.parametrize('argument_name', module.ARCHIVE_RELATED_ARGUMENT_NAMES[2:]) def test_delete_archives_with_archive_related_argument_calls_borg_delete(argument_name): flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels') - flexmock(module.borgmatic.borg.rdelete).should_receive('delete_repository').never() + flexmock(module.borgmatic.borg.repo_delete).should_receive('delete_repository').never() flexmock(module).should_receive('make_delete_command').and_return(flexmock()) flexmock(module.borgmatic.borg.environment).should_receive('make_environment').and_return( flexmock() @@ -319,10 +319,10 @@ def test_delete_archives_with_archive_related_argument_calls_borg_delete(argumen ) -def test_delete_archives_without_archive_related_argument_calls_borg_rdelete(): +def test_delete_archives_without_archive_related_argument_calls_borg_repo_delete(): flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels') flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) - flexmock(module.borgmatic.borg.rdelete).should_receive('delete_repository').once() + flexmock(module.borgmatic.borg.repo_delete).should_receive('delete_repository').once() flexmock(module).should_receive('make_delete_command').never() flexmock(module.borgmatic.borg.environment).should_receive('make_environment').never() flexmock(module.borgmatic.execute).should_receive('execute_command').never() diff --git a/tests/unit/borg/test_extract.py b/tests/unit/borg/test_extract.py index d5c660b3..db404e55 100644 --- a/tests/unit/borg/test_extract.py +++ b/tests/unit/borg/test_extract.py @@ -20,7 +20,7 @@ def insert_execute_command_mock(command, working_directory=None, borg_exit_codes def test_extract_last_archive_dry_run_calls_borg_with_last_archive(): - flexmock(module.rlist).should_receive('resolve_archive_name').and_return('archive') + flexmock(module.repo_list).should_receive('resolve_archive_name').and_return('archive') insert_execute_command_mock(('borg', 'extract', '--dry-run', 'repo::archive')) flexmock(module.flags).should_receive('make_repository_archive_flags').and_return( ('repo::archive',) @@ -36,7 +36,7 @@ def test_extract_last_archive_dry_run_calls_borg_with_last_archive(): def test_extract_last_archive_dry_run_without_any_archives_should_not_raise(): - flexmock(module.rlist).should_receive('resolve_archive_name').and_raise(ValueError) + flexmock(module.repo_list).should_receive('resolve_archive_name').and_raise(ValueError) flexmock(module.flags).should_receive('make_repository_archive_flags').and_return(('repo',)) module.extract_last_archive_dry_run( @@ -49,7 +49,7 @@ def test_extract_last_archive_dry_run_without_any_archives_should_not_raise(): def test_extract_last_archive_dry_run_with_log_info_calls_borg_with_info_parameter(): - flexmock(module.rlist).should_receive('resolve_archive_name').and_return('archive') + flexmock(module.repo_list).should_receive('resolve_archive_name').and_return('archive') insert_execute_command_mock(('borg', 'extract', '--dry-run', '--info', 'repo::archive')) insert_logging_mock(logging.INFO) flexmock(module.flags).should_receive('make_repository_archive_flags').and_return( @@ -66,7 +66,7 @@ def test_extract_last_archive_dry_run_with_log_info_calls_borg_with_info_paramet def test_extract_last_archive_dry_run_with_log_debug_calls_borg_with_debug_parameter(): - flexmock(module.rlist).should_receive('resolve_archive_name').and_return('archive') + flexmock(module.repo_list).should_receive('resolve_archive_name').and_return('archive') insert_execute_command_mock( ('borg', 'extract', '--dry-run', '--debug', '--show-rc', '--list', 'repo::archive') ) @@ -85,7 +85,7 @@ def test_extract_last_archive_dry_run_with_log_debug_calls_borg_with_debug_param def test_extract_last_archive_dry_run_calls_borg_via_local_path(): - flexmock(module.rlist).should_receive('resolve_archive_name').and_return('archive') + flexmock(module.repo_list).should_receive('resolve_archive_name').and_return('archive') insert_execute_command_mock(('borg1', 'extract', '--dry-run', 'repo::archive')) flexmock(module.flags).should_receive('make_repository_archive_flags').and_return( ('repo::archive',) @@ -102,7 +102,7 @@ def test_extract_last_archive_dry_run_calls_borg_via_local_path(): def test_extract_last_archive_dry_run_calls_borg_using_exit_codes(): - flexmock(module.rlist).should_receive('resolve_archive_name').and_return('archive') + flexmock(module.repo_list).should_receive('resolve_archive_name').and_return('archive') borg_exit_codes = flexmock() insert_execute_command_mock( ('borg', 'extract', '--dry-run', 'repo::archive'), borg_exit_codes=borg_exit_codes @@ -121,7 +121,7 @@ def test_extract_last_archive_dry_run_calls_borg_using_exit_codes(): def test_extract_last_archive_dry_run_calls_borg_with_remote_path_flags(): - flexmock(module.rlist).should_receive('resolve_archive_name').and_return('archive') + flexmock(module.repo_list).should_receive('resolve_archive_name').and_return('archive') insert_execute_command_mock( ('borg', 'extract', '--dry-run', '--remote-path', 'borg1', 'repo::archive') ) @@ -140,7 +140,7 @@ def test_extract_last_archive_dry_run_calls_borg_with_remote_path_flags(): def test_extract_last_archive_dry_run_calls_borg_with_log_json_flag(): - flexmock(module.rlist).should_receive('resolve_archive_name').and_return('archive') + flexmock(module.repo_list).should_receive('resolve_archive_name').and_return('archive') insert_execute_command_mock(('borg', 'extract', '--dry-run', '--log-json', 'repo::archive')) flexmock(module.flags).should_receive('make_repository_archive_flags').and_return( ('repo::archive',) @@ -156,7 +156,7 @@ def test_extract_last_archive_dry_run_calls_borg_with_log_json_flag(): def test_extract_last_archive_dry_run_calls_borg_with_lock_wait_flags(): - flexmock(module.rlist).should_receive('resolve_archive_name').and_return('archive') + flexmock(module.repo_list).should_receive('resolve_archive_name').and_return('archive') insert_execute_command_mock( ('borg', 'extract', '--dry-run', '--lock-wait', '5', 'repo::archive') ) diff --git a/tests/unit/borg/test_list.py b/tests/unit/borg/test_list.py index b753efd9..c9b7945f 100644 --- a/tests/unit/borg/test_list.py +++ b/tests/unit/borg/test_list.py @@ -474,7 +474,9 @@ def test_list_archive_calls_borg_multiple_times_with_find_paths(): ) flexmock(module.feature).should_receive('available').and_return(False) - flexmock(module.rlist).should_receive('make_rlist_command').and_return(('borg', 'list', 'repo')) + flexmock(module.repo_list).should_receive('make_repo_list_command').and_return( + ('borg', 'list', 'repo') + ) flexmock(module).should_receive('execute_command_and_capture_output').with_args( ('borg', 'list', 'repo'), extra_environment=None, @@ -574,7 +576,7 @@ def test_list_archive_without_archive_delegates_to_list_repository(): ) flexmock(module.feature).should_receive('available').and_return(False) - flexmock(module.rlist).should_receive('list_repository') + flexmock(module.repo_list).should_receive('list_repository') flexmock(module.environment).should_receive('make_environment').never() flexmock(module).should_receive('execute_command').never() @@ -605,7 +607,7 @@ def test_list_archive_with_borg_features_without_archive_delegates_to_list_repos ) flexmock(module.feature).should_receive('available').and_return(True) - flexmock(module.rlist).should_receive('list_repository') + flexmock(module.repo_list).should_receive('list_repository') flexmock(module.environment).should_receive('make_environment').never() flexmock(module).should_receive('execute_command').never() @@ -645,7 +647,7 @@ def test_list_archive_with_archive_ignores_archive_filter_flag( altered_filter_flags = {**default_filter_flags, **{archive_filter_flag: 'foo'}} flexmock(module.feature).should_receive('available').with_args( - module.feature.Feature.RLIST, '1.2.3' + module.feature.Feature.REPO_LIST, '1.2.3' ).and_return(False) flexmock(module).should_receive('make_list_command').with_args( repository_path='repo', @@ -689,7 +691,7 @@ def test_list_archive_with_archive_ignores_archive_filter_flag( 'last', ), ) -def test_list_archive_with_find_paths_allows_archive_filter_flag_but_only_passes_it_to_rlist( +def test_list_archive_with_find_paths_allows_archive_filter_flag_but_only_passes_it_to_repo_list( archive_filter_flag, ): flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels') @@ -707,20 +709,20 @@ def test_list_archive_with_find_paths_allows_archive_filter_flag_but_only_passes global_arguments = flexmock(log_json=False) flexmock(module.feature).should_receive('available').and_return(True) - flexmock(module.rlist).should_receive('make_rlist_command').with_args( + flexmock(module.repo_list).should_receive('make_repo_list_command').with_args( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=argparse.Namespace( + repo_list_arguments=argparse.Namespace( repository='repo', short=True, format=None, json=None, **altered_filter_flags ), global_arguments=global_arguments, local_path='borg', remote_path=None, - ).and_return(('borg', 'rlist', '--repo', 'repo')) + ).and_return(('borg', 'repo-list', '--repo', 'repo')) flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rlist', '--repo', 'repo'), + ('borg', 'repo-list', '--repo', 'repo'), extra_environment=None, borg_local_path='borg', borg_exit_codes=None, diff --git a/tests/unit/borg/test_rcreate.py b/tests/unit/borg/test_repo_create.py similarity index 76% rename from tests/unit/borg/test_rcreate.py rename to tests/unit/borg/test_repo_create.py index c5532826..5505f4ee 100644 --- a/tests/unit/borg/test_rcreate.py +++ b/tests/unit/borg/test_repo_create.py @@ -4,40 +4,42 @@ import subprocess import pytest from flexmock import flexmock -from borgmatic.borg import rcreate as module +from borgmatic.borg import repo_create as module from ..test_verbosity import insert_logging_mock -RINFO_SOME_UNKNOWN_EXIT_CODE = -999 -RCREATE_COMMAND = ('borg', 'rcreate', '--encryption', 'repokey') +REPO_INFO_SOME_UNKNOWN_EXIT_CODE = -999 +REPO_CREATE_COMMAND = ('borg', 'repo-create', '--encryption', 'repokey') -def insert_rinfo_command_found_mock(): - flexmock(module.rinfo).should_receive('display_repository_info').and_return( +def insert_repo_info_command_found_mock(): + flexmock(module.repo_info).should_receive('display_repository_info').and_return( '{"encryption": {"mode": "repokey"}}' ) -def insert_rinfo_command_not_found_mock(): - flexmock(module.rinfo).should_receive('display_repository_info').and_raise( - subprocess.CalledProcessError(sorted(module.RINFO_REPOSITORY_NOT_FOUND_EXIT_CODES)[0], []) +def insert_repo_info_command_not_found_mock(): + flexmock(module.repo_info).should_receive('display_repository_info').and_raise( + subprocess.CalledProcessError( + sorted(module.REPO_INFO_REPOSITORY_NOT_FOUND_EXIT_CODES)[0], [] + ) ) -def insert_rcreate_command_mock(rcreate_command, borg_exit_codes=None, **kwargs): +def insert_repo_create_command_mock(repo_create_command, borg_exit_codes=None, **kwargs): flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command').with_args( - rcreate_command, + repo_create_command, output_file=module.DO_NOT_CAPTURE, - borg_local_path=rcreate_command[0], + borg_local_path=repo_create_command[0], borg_exit_codes=borg_exit_codes, extra_environment=None, ).once() def test_create_repository_calls_borg_with_flags(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock(REPO_CREATE_COMMAND + ('--repo', 'repo')) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -57,7 +59,7 @@ def test_create_repository_calls_borg_with_flags(): def test_create_repository_with_dry_run_skips_borg_call(): - insert_rinfo_command_not_found_mock() + insert_repo_info_command_not_found_mock() flexmock(module).should_receive('execute_command').never() flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( @@ -77,8 +79,8 @@ def test_create_repository_with_dry_run_skips_borg_call(): ) -def test_create_repository_raises_for_borg_rcreate_error(): - insert_rinfo_command_not_found_mock() +def test_create_repository_raises_for_borg_repo_create_error(): + insert_repo_info_command_not_found_mock() flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -88,7 +90,7 @@ def test_create_repository_raises_for_borg_rcreate_error(): ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command').and_raise( - module.subprocess.CalledProcessError(2, 'borg rcreate') + module.subprocess.CalledProcessError(2, 'borg repo_create') ) with pytest.raises(subprocess.CalledProcessError): @@ -103,7 +105,7 @@ def test_create_repository_raises_for_borg_rcreate_error(): def test_create_repository_skips_creation_when_repository_already_exists(): - insert_rinfo_command_found_mock() + insert_repo_info_command_found_mock() flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -123,7 +125,7 @@ def test_create_repository_skips_creation_when_repository_already_exists(): def test_create_repository_errors_when_repository_with_differing_encryption_mode_already_exists(): - insert_rinfo_command_found_mock() + insert_repo_info_command_found_mock() flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -143,9 +145,9 @@ def test_create_repository_errors_when_repository_with_differing_encryption_mode ) -def test_create_repository_raises_for_unknown_rinfo_command_error(): - flexmock(module.rinfo).should_receive('display_repository_info').and_raise( - subprocess.CalledProcessError(RINFO_SOME_UNKNOWN_EXIT_CODE, []) +def test_create_repository_raises_for_unknown_repo_info_command_error(): + flexmock(module.repo_info).should_receive('display_repository_info').and_raise( + subprocess.CalledProcessError(REPO_INFO_SOME_UNKNOWN_EXIT_CODE, []) ) with pytest.raises(subprocess.CalledProcessError): @@ -160,8 +162,10 @@ def test_create_repository_raises_for_unknown_rinfo_command_error(): def test_create_repository_with_source_repository_calls_borg_with_other_repo_flag(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--other-repo', 'other.borg', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock( + REPO_CREATE_COMMAND + ('--other-repo', 'other.borg', '--repo', 'repo') + ) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -182,8 +186,8 @@ def test_create_repository_with_source_repository_calls_borg_with_other_repo_fla def test_create_repository_with_copy_crypt_key_calls_borg_with_copy_crypt_key_flag(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--copy-crypt-key', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock(REPO_CREATE_COMMAND + ('--copy-crypt-key', '--repo', 'repo')) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -204,8 +208,8 @@ def test_create_repository_with_copy_crypt_key_calls_borg_with_copy_crypt_key_fl def test_create_repository_with_append_only_calls_borg_with_append_only_flag(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--append-only', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock(REPO_CREATE_COMMAND + ('--append-only', '--repo', 'repo')) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -226,8 +230,10 @@ def test_create_repository_with_append_only_calls_borg_with_append_only_flag(): def test_create_repository_with_storage_quota_calls_borg_with_storage_quota_flag(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--storage-quota', '5G', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock( + REPO_CREATE_COMMAND + ('--storage-quota', '5G', '--repo', 'repo') + ) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -248,8 +254,8 @@ def test_create_repository_with_storage_quota_calls_borg_with_storage_quota_flag def test_create_repository_with_make_parent_dirs_calls_borg_with_make_parent_dirs_flag(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--make-parent-dirs', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock(REPO_CREATE_COMMAND + ('--make-parent-dirs', '--repo', 'repo')) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -270,8 +276,8 @@ def test_create_repository_with_make_parent_dirs_calls_borg_with_make_parent_dir def test_create_repository_with_log_info_calls_borg_with_info_flag(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--info', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock(REPO_CREATE_COMMAND + ('--info', '--repo', 'repo')) insert_logging_mock(logging.INFO) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( @@ -292,8 +298,8 @@ def test_create_repository_with_log_info_calls_borg_with_info_flag(): def test_create_repository_with_log_debug_calls_borg_with_debug_flag(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--debug', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock(REPO_CREATE_COMMAND + ('--debug', '--repo', 'repo')) insert_logging_mock(logging.DEBUG) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( @@ -314,8 +320,8 @@ def test_create_repository_with_log_debug_calls_borg_with_debug_flag(): def test_create_repository_with_log_json_calls_borg_with_log_json_flag(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--log-json', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock(REPO_CREATE_COMMAND + ('--log-json', '--repo', 'repo')) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -335,8 +341,8 @@ def test_create_repository_with_log_json_calls_borg_with_log_json_flag(): def test_create_repository_with_lock_wait_calls_borg_with_lock_wait_flag(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--lock-wait', '5', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock(REPO_CREATE_COMMAND + ('--lock-wait', '5', '--repo', 'repo')) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -356,8 +362,8 @@ def test_create_repository_with_lock_wait_calls_borg_with_lock_wait_flag(): def test_create_repository_with_local_path_calls_borg_via_local_path(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(('borg1',) + RCREATE_COMMAND[1:] + ('--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock(('borg1',) + REPO_CREATE_COMMAND[1:] + ('--repo', 'repo')) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -379,9 +385,9 @@ def test_create_repository_with_local_path_calls_borg_via_local_path(): def test_create_repository_with_exit_codes_calls_borg_using_them(): borg_exit_codes = flexmock() - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock( - ('borg',) + RCREATE_COMMAND[1:] + ('--repo', 'repo'), borg_exit_codes=borg_exit_codes + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock( + ('borg',) + REPO_CREATE_COMMAND[1:] + ('--repo', 'repo'), borg_exit_codes=borg_exit_codes ) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( @@ -402,8 +408,10 @@ def test_create_repository_with_exit_codes_calls_borg_using_them(): def test_create_repository_with_remote_path_calls_borg_with_remote_path_flag(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--remote-path', 'borg1', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock( + REPO_CREATE_COMMAND + ('--remote-path', 'borg1', '--repo', 'repo') + ) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -424,8 +432,10 @@ def test_create_repository_with_remote_path_calls_borg_with_remote_path_flag(): def test_create_repository_with_extra_borg_options_calls_borg_with_extra_options(): - insert_rinfo_command_not_found_mock() - insert_rcreate_command_mock(RCREATE_COMMAND + ('--extra', '--options', '--repo', 'repo')) + insert_repo_info_command_not_found_mock() + insert_repo_create_command_mock( + REPO_CREATE_COMMAND + ('--extra', '--options', '--repo', 'repo') + ) flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.flags).should_receive('make_repository_flags').and_return( ( @@ -437,7 +447,7 @@ def test_create_repository_with_extra_borg_options_calls_borg_with_extra_options module.create_repository( dry_run=False, repository_path='repo', - config={'extra_borg_options': {'rcreate': '--extra --options'}}, + config={'extra_borg_options': {'repo-create': '--extra --options'}}, local_borg_version='2.3.4', global_arguments=flexmock(log_json=False), encryption_mode='repokey', diff --git a/tests/unit/borg/test_rdelete.py b/tests/unit/borg/test_repo_delete.py similarity index 76% rename from tests/unit/borg/test_rdelete.py rename to tests/unit/borg/test_repo_delete.py index 869b91d1..36852d0a 100644 --- a/tests/unit/borg/test_rdelete.py +++ b/tests/unit/borg/test_repo_delete.py @@ -2,12 +2,12 @@ import logging from flexmock import flexmock -from borgmatic.borg import rdelete as module +from borgmatic.borg import repo_delete as module from ..test_verbosity import insert_logging_mock -def test_make_rdelete_command_with_feature_available_runs_borg_rdelete(): +def test_make_repo_delete_command_with_feature_available_runs_borg_repo_delete(): flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) flexmock(module.borgmatic.borg.flags).should_receive('make_flags_from_arguments').and_return(()) @@ -15,20 +15,20 @@ def test_make_rdelete_command_with_feature_available_runs_borg_rdelete(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=False, force=0), + repo_delete_arguments=flexmock(list_archives=False, force=0), global_arguments=flexmock(dry_run=False, log_json=False), local_path='borg', remote_path=None, ) - assert command == ('borg', 'rdelete', 'repo') + assert command == ('borg', 'repo-delete', 'repo') -def test_make_rdelete_command_without_feature_available_runs_borg_delete(): +def test_make_repo_delete_command_without_feature_available_runs_borg_delete(): flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(False) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) flexmock(module.borgmatic.borg.flags).should_receive('make_flags_from_arguments').and_return(()) @@ -36,11 +36,11 @@ def test_make_rdelete_command_without_feature_available_runs_borg_delete(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=False, force=0), + repo_delete_arguments=flexmock(list_archives=False, force=0), global_arguments=flexmock(dry_run=False, log_json=False), local_path='borg', remote_path=None, @@ -49,7 +49,7 @@ def test_make_rdelete_command_without_feature_available_runs_borg_delete(): assert command == ('borg', 'delete', 'repo') -def test_make_rdelete_command_includes_log_info(): +def test_make_repo_delete_command_includes_log_info(): insert_logging_mock(logging.INFO) flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) @@ -58,20 +58,20 @@ def test_make_rdelete_command_includes_log_info(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=False, force=0), + repo_delete_arguments=flexmock(list_archives=False, force=0), global_arguments=flexmock(dry_run=False, log_json=False), local_path='borg', remote_path=None, ) - assert command == ('borg', 'rdelete', '--info', 'repo') + assert command == ('borg', 'repo-delete', '--info', 'repo') -def test_make_rdelete_command_includes_log_debug(): +def test_make_repo_delete_command_includes_log_debug(): insert_logging_mock(logging.DEBUG) flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) @@ -80,20 +80,20 @@ def test_make_rdelete_command_includes_log_debug(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=False, force=0), + repo_delete_arguments=flexmock(list_archives=False, force=0), global_arguments=flexmock(dry_run=False, log_json=False), local_path='borg', remote_path=None, ) - assert command == ('borg', 'rdelete', '--debug', '--show-rc', 'repo') + assert command == ('borg', 'repo-delete', '--debug', '--show-rc', 'repo') -def test_make_rdelete_command_includes_dry_run(): +def test_make_repo_delete_command_includes_dry_run(): flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').with_args( @@ -104,20 +104,20 @@ def test_make_rdelete_command_includes_dry_run(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=False, force=0), + repo_delete_arguments=flexmock(list_archives=False, force=0), global_arguments=flexmock(dry_run=True, log_json=False), local_path='borg', remote_path=None, ) - assert command == ('borg', 'rdelete', '--dry-run', 'repo') + assert command == ('borg', 'repo-delete', '--dry-run', 'repo') -def test_make_rdelete_command_includes_remote_path(): +def test_make_repo_delete_command_includes_remote_path(): flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').with_args( @@ -128,20 +128,20 @@ def test_make_rdelete_command_includes_remote_path(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=False, force=0), + repo_delete_arguments=flexmock(list_archives=False, force=0), global_arguments=flexmock(dry_run=False, log_json=False), local_path='borg', remote_path='borg1', ) - assert command == ('borg', 'rdelete', '--remote-path', 'borg1', 'repo') + assert command == ('borg', 'repo-delete', '--remote-path', 'borg1', 'repo') -def test_make_rdelete_command_includes_log_json(): +def test_make_repo_delete_command_includes_log_json(): flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').with_args( @@ -152,20 +152,20 @@ def test_make_rdelete_command_includes_log_json(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=False, force=0), + repo_delete_arguments=flexmock(list_archives=False, force=0), global_arguments=flexmock(dry_run=False, log_json=True), local_path='borg', remote_path=None, ) - assert command == ('borg', 'rdelete', '--log-json', 'repo') + assert command == ('borg', 'repo-delete', '--log-json', 'repo') -def test_make_rdelete_command_includes_lock_wait(): +def test_make_repo_delete_command_includes_lock_wait(): flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').with_args( @@ -176,20 +176,20 @@ def test_make_rdelete_command_includes_lock_wait(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={'lock_wait': 5}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=False, force=0), + repo_delete_arguments=flexmock(list_archives=False, force=0), global_arguments=flexmock(dry_run=False, log_json=False), local_path='borg', remote_path=None, ) - assert command == ('borg', 'rdelete', '--lock-wait', '5', 'repo') + assert command == ('borg', 'repo-delete', '--lock-wait', '5', 'repo') -def test_make_rdelete_command_includes_list(): +def test_make_repo_delete_command_includes_list(): flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').with_args( @@ -200,20 +200,20 @@ def test_make_rdelete_command_includes_list(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=True, force=0), + repo_delete_arguments=flexmock(list_archives=True, force=0), global_arguments=flexmock(dry_run=False, log_json=False), local_path='borg', remote_path=None, ) - assert command == ('borg', 'rdelete', '--list', 'repo') + assert command == ('borg', 'repo-delete', '--list', 'repo') -def test_make_rdelete_command_includes_force(): +def test_make_repo_delete_command_includes_force(): flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) flexmock(module.borgmatic.borg.flags).should_receive('make_flags_from_arguments').and_return(()) @@ -221,20 +221,20 @@ def test_make_rdelete_command_includes_force(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=False, force=1), + repo_delete_arguments=flexmock(list_archives=False, force=1), global_arguments=flexmock(dry_run=False, log_json=False), local_path='borg', remote_path=None, ) - assert command == ('borg', 'rdelete', '--force', 'repo') + assert command == ('borg', 'repo-delete', '--force', 'repo') -def test_make_rdelete_command_includes_force_twice(): +def test_make_repo_delete_command_includes_force_twice(): flexmock(module.borgmatic.borg.feature).should_receive('available').and_return(True) flexmock(module.borgmatic.borg.flags).should_receive('make_flags').and_return(()) flexmock(module.borgmatic.borg.flags).should_receive('make_flags_from_arguments').and_return(()) @@ -242,23 +242,23 @@ def test_make_rdelete_command_includes_force_twice(): ('repo',) ) - command = module.make_rdelete_command( + command = module.make_repo_delete_command( repository={'path': 'repo'}, config={}, local_borg_version='1.2.3', - rdelete_arguments=flexmock(list_archives=False, force=2), + repo_delete_arguments=flexmock(list_archives=False, force=2), global_arguments=flexmock(dry_run=False, log_json=False), local_path='borg', remote_path=None, ) - assert command == ('borg', 'rdelete', '--force', '--force', 'repo') + assert command == ('borg', 'repo-delete', '--force', '--force', 'repo') def test_delete_repository_with_defaults_does_not_capture_output(): flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels') command = flexmock() - flexmock(module).should_receive('make_rdelete_command').and_return(command) + flexmock(module).should_receive('make_repo_delete_command').and_return(command) flexmock(module.borgmatic.borg.environment).should_receive('make_environment').and_return( flexmock() ) @@ -275,7 +275,7 @@ def test_delete_repository_with_defaults_does_not_capture_output(): repository={'path': 'repo'}, config={}, local_borg_version=flexmock(), - rdelete_arguments=flexmock(force=False, cache_only=False), + repo_delete_arguments=flexmock(force=False, cache_only=False), global_arguments=flexmock(), local_path='borg', remote_path=None, @@ -285,7 +285,7 @@ def test_delete_repository_with_defaults_does_not_capture_output(): def test_delete_repository_with_force_captures_output(): flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels') command = flexmock() - flexmock(module).should_receive('make_rdelete_command').and_return(command) + flexmock(module).should_receive('make_repo_delete_command').and_return(command) flexmock(module.borgmatic.borg.environment).should_receive('make_environment').and_return( flexmock() ) @@ -302,7 +302,7 @@ def test_delete_repository_with_force_captures_output(): repository={'path': 'repo'}, config={}, local_borg_version=flexmock(), - rdelete_arguments=flexmock(force=True, cache_only=False), + repo_delete_arguments=flexmock(force=True, cache_only=False), global_arguments=flexmock(), local_path='borg', remote_path=None, @@ -312,7 +312,7 @@ def test_delete_repository_with_force_captures_output(): def test_delete_repository_with_cache_only_captures_output(): flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels') command = flexmock() - flexmock(module).should_receive('make_rdelete_command').and_return(command) + flexmock(module).should_receive('make_repo_delete_command').and_return(command) flexmock(module.borgmatic.borg.environment).should_receive('make_environment').and_return( flexmock() ) @@ -329,7 +329,7 @@ def test_delete_repository_with_cache_only_captures_output(): repository={'path': 'repo'}, config={}, local_borg_version=flexmock(), - rdelete_arguments=flexmock(force=False, cache_only=True), + repo_delete_arguments=flexmock(force=False, cache_only=True), global_arguments=flexmock(), local_path='borg', remote_path=None, diff --git a/tests/unit/borg/test_rinfo.py b/tests/unit/borg/test_repo_info.py similarity index 88% rename from tests/unit/borg/test_rinfo.py rename to tests/unit/borg/test_repo_info.py index 0f38535e..bc513161 100644 --- a/tests/unit/borg/test_rinfo.py +++ b/tests/unit/borg/test_repo_info.py @@ -2,7 +2,7 @@ import logging from flexmock import flexmock -from borgmatic.borg import rinfo as module +from borgmatic.borg import repo_info as module from ..test_verbosity import insert_logging_mock @@ -19,14 +19,14 @@ def test_display_repository_info_calls_borg_with_flags(): ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--json', '--repo', 'repo'), + ('borg', 'repo-info', '--json', '--repo', 'repo'), borg_local_path='borg', borg_exit_codes=None, extra_environment=None, ).and_return('[]') flexmock(module.flags).should_receive('warn_for_aggressive_archive_flags') flexmock(module).should_receive('execute_command').with_args( - ('borg', 'rinfo', '--repo', 'repo'), + ('borg', 'repo-info', '--repo', 'repo'), output_log_level=module.borgmatic.logger.ANSWER, borg_local_path='borg', borg_exit_codes=None, @@ -37,7 +37,7 @@ def test_display_repository_info_calls_borg_with_flags(): repository_path='repo', config={}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=False), + repo_info_arguments=flexmock(json=False), global_arguments=flexmock(log_json=False), ) @@ -49,7 +49,7 @@ def test_display_repository_info_without_borg_features_calls_borg_with_info_sub_ flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--json', 'repo'), + ('borg', 'repo-info', '--json', 'repo'), borg_local_path='borg', borg_exit_codes=None, extra_environment=None, @@ -67,7 +67,7 @@ def test_display_repository_info_without_borg_features_calls_borg_with_info_sub_ repository_path='repo', config={}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=False), + repo_info_arguments=flexmock(json=False), global_arguments=flexmock(log_json=False), ) @@ -84,14 +84,14 @@ def test_display_repository_info_with_log_info_calls_borg_with_info_flag(): ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--info', '--json', '--repo', 'repo'), + ('borg', 'repo-info', '--info', '--json', '--repo', 'repo'), borg_local_path='borg', borg_exit_codes=None, extra_environment=None, ).and_return('[]') flexmock(module.flags).should_receive('warn_for_aggressive_archive_flags') flexmock(module).should_receive('execute_command').with_args( - ('borg', 'rinfo', '--info', '--repo', 'repo'), + ('borg', 'repo-info', '--info', '--repo', 'repo'), output_log_level=module.borgmatic.logger.ANSWER, borg_local_path='borg', borg_exit_codes=None, @@ -102,7 +102,7 @@ def test_display_repository_info_with_log_info_calls_borg_with_info_flag(): repository_path='repo', config={}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=False), + repo_info_arguments=flexmock(json=False), global_arguments=flexmock(log_json=False), ) @@ -119,7 +119,7 @@ def test_display_repository_info_with_log_info_and_json_suppresses_most_borg_out ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--json', '--repo', 'repo'), + ('borg', 'repo-info', '--json', '--repo', 'repo'), extra_environment=None, borg_local_path='borg', borg_exit_codes=None, @@ -131,7 +131,7 @@ def test_display_repository_info_with_log_info_and_json_suppresses_most_borg_out repository_path='repo', config={}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=True), + repo_info_arguments=flexmock(json=True), global_arguments=flexmock(log_json=False), ) @@ -150,14 +150,14 @@ def test_display_repository_info_with_log_debug_calls_borg_with_debug_flag(): ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--debug', '--show-rc', '--json', '--repo', 'repo'), + ('borg', 'repo-info', '--debug', '--show-rc', '--json', '--repo', 'repo'), borg_local_path='borg', borg_exit_codes=None, extra_environment=None, ).and_return('[]') flexmock(module.flags).should_receive('warn_for_aggressive_archive_flags') flexmock(module).should_receive('execute_command').with_args( - ('borg', 'rinfo', '--debug', '--show-rc', '--repo', 'repo'), + ('borg', 'repo-info', '--debug', '--show-rc', '--repo', 'repo'), output_log_level=module.borgmatic.logger.ANSWER, borg_local_path='borg', borg_exit_codes=None, @@ -169,7 +169,7 @@ def test_display_repository_info_with_log_debug_calls_borg_with_debug_flag(): repository_path='repo', config={}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=False), + repo_info_arguments=flexmock(json=False), global_arguments=flexmock(log_json=False), ) @@ -186,7 +186,7 @@ def test_display_repository_info_with_log_debug_and_json_suppresses_most_borg_ou ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--json', '--repo', 'repo'), + ('borg', 'repo-info', '--json', '--repo', 'repo'), extra_environment=None, borg_local_path='borg', borg_exit_codes=None, @@ -198,7 +198,7 @@ def test_display_repository_info_with_log_debug_and_json_suppresses_most_borg_ou repository_path='repo', config={}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=True), + repo_info_arguments=flexmock(json=True), global_arguments=flexmock(log_json=False), ) @@ -217,7 +217,7 @@ def test_display_repository_info_with_json_calls_borg_with_json_flag(): ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--json', '--repo', 'repo'), + ('borg', 'repo-info', '--json', '--repo', 'repo'), extra_environment=None, borg_local_path='borg', borg_exit_codes=None, @@ -228,7 +228,7 @@ def test_display_repository_info_with_json_calls_borg_with_json_flag(): repository_path='repo', config={}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=True), + repo_info_arguments=flexmock(json=True), global_arguments=flexmock(log_json=False), ) @@ -247,14 +247,14 @@ def test_display_repository_info_with_local_path_calls_borg_via_local_path(): ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg1', 'rinfo', '--json', '--repo', 'repo'), + ('borg1', 'repo-info', '--json', '--repo', 'repo'), extra_environment=None, borg_local_path='borg', borg_exit_codes=None, ).and_return('[]') flexmock(module.flags).should_receive('warn_for_aggressive_archive_flags') flexmock(module).should_receive('execute_command').with_args( - ('borg1', 'rinfo', '--repo', 'repo'), + ('borg1', 'repo-info', '--repo', 'repo'), output_log_level=module.borgmatic.logger.ANSWER, borg_local_path='borg1', borg_exit_codes=None, @@ -265,7 +265,7 @@ def test_display_repository_info_with_local_path_calls_borg_via_local_path(): repository_path='repo', config={}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=False), + repo_info_arguments=flexmock(json=False), global_arguments=flexmock(log_json=False), local_path='borg1', ) @@ -284,14 +284,14 @@ def test_display_repository_info_with_exit_codes_calls_borg_using_them(): flexmock(module.environment).should_receive('make_environment') borg_exit_codes = flexmock() flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--json', '--repo', 'repo'), + ('borg', 'repo-info', '--json', '--repo', 'repo'), extra_environment=None, borg_local_path='borg', borg_exit_codes=borg_exit_codes, ).and_return('[]') flexmock(module.flags).should_receive('warn_for_aggressive_archive_flags') flexmock(module).should_receive('execute_command').with_args( - ('borg', 'rinfo', '--repo', 'repo'), + ('borg', 'repo-info', '--repo', 'repo'), output_log_level=module.borgmatic.logger.ANSWER, borg_local_path='borg', borg_exit_codes=borg_exit_codes, @@ -302,7 +302,7 @@ def test_display_repository_info_with_exit_codes_calls_borg_using_them(): repository_path='repo', config={'borg_exit_codes': borg_exit_codes}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=False), + repo_info_arguments=flexmock(json=False), global_arguments=flexmock(log_json=False), ) @@ -319,14 +319,14 @@ def test_display_repository_info_with_remote_path_calls_borg_with_remote_path_fl ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--remote-path', 'borg1', '--json', '--repo', 'repo'), + ('borg', 'repo-info', '--remote-path', 'borg1', '--json', '--repo', 'repo'), extra_environment=None, borg_local_path='borg', borg_exit_codes=None, ).and_return('[]') flexmock(module.flags).should_receive('warn_for_aggressive_archive_flags') flexmock(module).should_receive('execute_command').with_args( - ('borg', 'rinfo', '--remote-path', 'borg1', '--repo', 'repo'), + ('borg', 'repo-info', '--remote-path', 'borg1', '--repo', 'repo'), output_log_level=module.borgmatic.logger.ANSWER, borg_local_path='borg', borg_exit_codes=None, @@ -337,7 +337,7 @@ def test_display_repository_info_with_remote_path_calls_borg_with_remote_path_fl repository_path='repo', config={}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=False), + repo_info_arguments=flexmock(json=False), global_arguments=flexmock(log_json=False), remote_path='borg1', ) @@ -355,14 +355,14 @@ def test_display_repository_info_with_log_json_calls_borg_with_log_json_flags(): ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--log-json', '--json', '--repo', 'repo'), + ('borg', 'repo-info', '--log-json', '--json', '--repo', 'repo'), extra_environment=None, borg_local_path='borg', borg_exit_codes=None, ).and_return('[]') flexmock(module.flags).should_receive('warn_for_aggressive_archive_flags') flexmock(module).should_receive('execute_command').with_args( - ('borg', 'rinfo', '--log-json', '--repo', 'repo'), + ('borg', 'repo-info', '--log-json', '--repo', 'repo'), output_log_level=module.borgmatic.logger.ANSWER, borg_local_path='borg', borg_exit_codes=None, @@ -373,7 +373,7 @@ def test_display_repository_info_with_log_json_calls_borg_with_log_json_flags(): repository_path='repo', config={}, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=False), + repo_info_arguments=flexmock(json=False), global_arguments=flexmock(log_json=True), ) @@ -391,14 +391,14 @@ def test_display_repository_info_with_lock_wait_calls_borg_with_lock_wait_flags( ) flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').with_args( - ('borg', 'rinfo', '--lock-wait', '5', '--json', '--repo', 'repo'), + ('borg', 'repo-info', '--lock-wait', '5', '--json', '--repo', 'repo'), extra_environment=None, borg_local_path='borg', borg_exit_codes=None, ).and_return('[]') flexmock(module.flags).should_receive('warn_for_aggressive_archive_flags') flexmock(module).should_receive('execute_command').with_args( - ('borg', 'rinfo', '--lock-wait', '5', '--repo', 'repo'), + ('borg', 'repo-info', '--lock-wait', '5', '--repo', 'repo'), output_log_level=module.borgmatic.logger.ANSWER, borg_local_path='borg', borg_exit_codes=None, @@ -409,6 +409,6 @@ def test_display_repository_info_with_lock_wait_calls_borg_with_lock_wait_flags( repository_path='repo', config=config, local_borg_version='2.3.4', - rinfo_arguments=flexmock(json=False), + repo_info_arguments=flexmock(json=False), global_arguments=flexmock(log_json=False), ) diff --git a/tests/unit/borg/test_rlist.py b/tests/unit/borg/test_repo_list.py similarity index 88% rename from tests/unit/borg/test_rlist.py rename to tests/unit/borg/test_repo_list.py index e2c49f32..bae3de5c 100644 --- a/tests/unit/borg/test_rlist.py +++ b/tests/unit/borg/test_repo_list.py @@ -4,7 +4,7 @@ import logging import pytest from flexmock import flexmock -from borgmatic.borg import rlist as module +from borgmatic.borg import repo_list as module from ..test_verbosity import insert_logging_mock @@ -233,7 +233,7 @@ def test_resolve_archive_name_with_lock_wait_calls_borg_with_lock_wait_flags(): ) -def test_make_rlist_command_includes_log_info(): +def test_make_repo_list_command_includes_log_info(): insert_logging_mock(logging.INFO) flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( @@ -242,11 +242,11 @@ def test_make_rlist_command_includes_log_info(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(()) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, prefix=None, match_archives=None ), global_arguments=flexmock(log_json=False), @@ -255,7 +255,7 @@ def test_make_rlist_command_includes_log_info(): assert command == ('borg', 'list', '--info', 'repo') -def test_make_rlist_command_includes_json_but_not_info(): +def test_make_repo_list_command_includes_json_but_not_info(): insert_logging_mock(logging.INFO) flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( @@ -264,11 +264,11 @@ def test_make_rlist_command_includes_json_but_not_info(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(('--json',)) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=True, prefix=None, match_archives=None ), global_arguments=flexmock(log_json=False), @@ -277,7 +277,7 @@ def test_make_rlist_command_includes_json_but_not_info(): assert command == ('borg', 'list', '--json', 'repo') -def test_make_rlist_command_includes_log_debug(): +def test_make_repo_list_command_includes_log_debug(): insert_logging_mock(logging.DEBUG) flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( @@ -286,11 +286,11 @@ def test_make_rlist_command_includes_log_debug(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(()) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, prefix=None, match_archives=None ), global_arguments=flexmock(log_json=False), @@ -299,7 +299,7 @@ def test_make_rlist_command_includes_log_debug(): assert command == ('borg', 'list', '--debug', '--show-rc', 'repo') -def test_make_rlist_command_includes_json_but_not_debug(): +def test_make_repo_list_command_includes_json_but_not_debug(): insert_logging_mock(logging.DEBUG) flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( @@ -308,11 +308,11 @@ def test_make_rlist_command_includes_json_but_not_debug(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(('--json',)) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=True, prefix=None, match_archives=None ), global_arguments=flexmock(log_json=False), @@ -321,7 +321,7 @@ def test_make_rlist_command_includes_json_but_not_debug(): assert command == ('borg', 'list', '--json', 'repo') -def test_make_rlist_command_includes_json(): +def test_make_repo_list_command_includes_json(): flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( None, None, '1.2.3' @@ -329,11 +329,11 @@ def test_make_rlist_command_includes_json(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(('--json',)) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=True, prefix=None, match_archives=None ), global_arguments=flexmock(log_json=False), @@ -342,7 +342,7 @@ def test_make_rlist_command_includes_json(): assert command == ('borg', 'list', '--json', 'repo') -def test_make_rlist_command_includes_log_json(): +def test_make_repo_list_command_includes_log_json(): flexmock(module.flags).should_receive('make_flags').and_return(()).and_return( ('--log-json',) ).and_return(()) @@ -352,11 +352,11 @@ def test_make_rlist_command_includes_log_json(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(()) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, prefix=None, match_archives=None ), global_arguments=flexmock(log_json=True), @@ -365,7 +365,7 @@ def test_make_rlist_command_includes_log_json(): assert command == ('borg', 'list', '--log-json', 'repo') -def test_make_rlist_command_includes_lock_wait(): +def test_make_repo_list_command_includes_lock_wait(): flexmock(module.flags).should_receive('make_flags').and_return(()).and_return( ('--lock-wait', '5') ).and_return(()) @@ -375,11 +375,11 @@ def test_make_rlist_command_includes_lock_wait(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(()) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={'lock_wait': 5}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, prefix=None, match_archives=None ), global_arguments=flexmock(log_json=False), @@ -388,7 +388,7 @@ def test_make_rlist_command_includes_lock_wait(): assert command == ('borg', 'list', '--lock-wait', '5', 'repo') -def test_make_rlist_command_includes_local_path(): +def test_make_repo_list_command_includes_local_path(): flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( None, None, '1.2.3' @@ -396,11 +396,11 @@ def test_make_rlist_command_includes_local_path(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(()) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, prefix=None, match_archives=None ), global_arguments=flexmock(log_json=False), @@ -410,7 +410,7 @@ def test_make_rlist_command_includes_local_path(): assert command == ('borg2', 'list', 'repo') -def test_make_rlist_command_includes_remote_path(): +def test_make_repo_list_command_includes_remote_path(): flexmock(module.flags).should_receive('make_flags').and_return( ('--remote-path', 'borg2') ).and_return(()).and_return(()) @@ -420,11 +420,11 @@ def test_make_rlist_command_includes_remote_path(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(()) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, prefix=None, match_archives=None ), global_arguments=flexmock(log_json=False), @@ -434,7 +434,7 @@ def test_make_rlist_command_includes_remote_path(): assert command == ('borg', 'list', '--remote-path', 'borg2', 'repo') -def test_make_rlist_command_transforms_prefix_into_match_archives(): +def test_make_repo_list_command_transforms_prefix_into_match_archives(): flexmock(module.flags).should_receive('make_flags').and_return(()).and_return(()).and_return( ('--match-archives', 'sh:foo*') ) @@ -444,18 +444,18 @@ def test_make_rlist_command_transforms_prefix_into_match_archives(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(()) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock(archive=None, paths=None, json=False, prefix='foo'), + repo_list_arguments=flexmock(archive=None, paths=None, json=False, prefix='foo'), global_arguments=flexmock(log_json=False), ) assert command == ('borg', 'list', '--match-archives', 'sh:foo*', 'repo') -def test_make_rlist_command_prefers_prefix_over_archive_name_format(): +def test_make_repo_list_command_prefers_prefix_over_archive_name_format(): flexmock(module.flags).should_receive('make_flags').and_return(()).and_return(()).and_return( ('--match-archives', 'sh:foo*') ) @@ -463,18 +463,18 @@ def test_make_rlist_command_prefers_prefix_over_archive_name_format(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(()) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={'archive_name_format': 'bar-{now}'}, # noqa: FS003 local_borg_version='1.2.3', - rlist_arguments=flexmock(archive=None, paths=None, json=False, prefix='foo'), + repo_list_arguments=flexmock(archive=None, paths=None, json=False, prefix='foo'), global_arguments=flexmock(log_json=False), ) assert command == ('borg', 'list', '--match-archives', 'sh:foo*', 'repo') -def test_make_rlist_command_transforms_archive_name_format_into_match_archives(): +def test_make_repo_list_command_transforms_archive_name_format_into_match_archives(): flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( None, 'bar-{now}', '1.2.3' # noqa: FS003 @@ -482,11 +482,11 @@ def test_make_rlist_command_transforms_archive_name_format_into_match_archives() flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(()) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={'archive_name_format': 'bar-{now}'}, # noqa: FS003 local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, prefix=None, match_archives=None ), global_arguments=flexmock(log_json=False), @@ -495,7 +495,7 @@ def test_make_rlist_command_transforms_archive_name_format_into_match_archives() assert command == ('borg', 'list', '--match-archives', 'sh:bar-*', 'repo') -def test_make_rlist_command_includes_short(): +def test_make_repo_list_command_includes_short(): flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( None, None, '1.2.3' @@ -503,11 +503,11 @@ def test_make_rlist_command_includes_short(): flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(('--short',)) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, prefix=None, match_archives=None, short=True ), global_arguments=flexmock(log_json=False), @@ -528,7 +528,7 @@ def test_make_rlist_command_includes_short(): 'patterns_from', ), ) -def test_make_rlist_command_includes_additional_flags(argument_name): +def test_make_repo_list_command_includes_additional_flags(argument_name): flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( None, None, '1.2.3' @@ -538,11 +538,11 @@ def test_make_rlist_command_includes_additional_flags(argument_name): ) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, @@ -558,7 +558,7 @@ def test_make_rlist_command_includes_additional_flags(argument_name): assert command == ('borg', 'list', '--' + argument_name.replace('_', '-'), 'value', 'repo') -def test_make_rlist_command_with_match_archives_calls_borg_with_match_archives_flags(): +def test_make_repo_list_command_with_match_archives_calls_borg_with_match_archives_flags(): flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( None, None, '1.2.3' @@ -571,11 +571,11 @@ def test_make_rlist_command_with_match_archives_calls_borg_with_match_archives_f flexmock(module.flags).should_receive('make_flags_from_arguments').and_return(()) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, @@ -592,7 +592,7 @@ def test_make_rlist_command_with_match_archives_calls_borg_with_match_archives_f def test_list_repository_calls_two_commands(): flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels') - flexmock(module).should_receive('make_rlist_command') + flexmock(module).should_receive('make_repo_list_command') flexmock(module.environment).should_receive('make_environment') flexmock(module).should_receive('execute_command_and_capture_output').once() flexmock(module.flags).should_receive('warn_for_aggressive_archive_flags') @@ -602,14 +602,14 @@ def test_list_repository_calls_two_commands(): repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=argparse.Namespace(json=False), + repo_list_arguments=argparse.Namespace(json=False), global_arguments=flexmock(), ) def test_list_repository_with_json_calls_json_command_only(): flexmock(module.borgmatic.logger).should_receive('add_custom_log_levels') - flexmock(module).should_receive('make_rlist_command') + flexmock(module).should_receive('make_repo_list_command') flexmock(module.environment).should_receive('make_environment') json_output = flexmock() flexmock(module).should_receive('execute_command_and_capture_output').and_return(json_output) @@ -621,14 +621,14 @@ def test_list_repository_with_json_calls_json_command_only(): repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=argparse.Namespace(json=True), + repo_list_arguments=argparse.Namespace(json=True), global_arguments=flexmock(), ) == json_output ) -def test_make_rlist_command_with_date_based_matching_calls_borg_with_date_based_flags(): +def test_make_repo_list_command_with_date_based_matching_calls_borg_with_date_based_flags(): flexmock(module.flags).should_receive('make_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').with_args( None, None, '1.2.3' @@ -638,11 +638,11 @@ def test_make_rlist_command_with_date_based_matching_calls_borg_with_date_based_ ) flexmock(module.flags).should_receive('make_repository_flags').and_return(('repo',)) - command = module.make_rlist_command( + command = module.make_repo_list_command( repository_path='repo', config={}, local_borg_version='1.2.3', - rlist_arguments=flexmock( + repo_list_arguments=flexmock( archive=None, paths=None, json=False, diff --git a/tests/unit/commands/test_borgmatic.py b/tests/unit/commands/test_borgmatic.py index 29d7920a..10eebd90 100644 --- a/tests/unit/commands/test_borgmatic.py +++ b/tests/unit/commands/test_borgmatic.py @@ -467,15 +467,18 @@ def test_run_configuration_retries_timeout_multiple_repos(): assert results == error_logs -def test_run_actions_runs_rcreate(): +def test_run_actions_runs_repo_create(): flexmock(module).should_receive('add_custom_log_levels') flexmock(module).should_receive('get_skip_actions').and_return([]) flexmock(module.command).should_receive('execute_hook') - flexmock(borgmatic.actions.rcreate).should_receive('run_rcreate').once() + flexmock(borgmatic.actions.repo_create).should_receive('run_repo_create').once() tuple( module.run_actions( - arguments={'global': flexmock(dry_run=False, log_file='foo'), 'rcreate': flexmock()}, + arguments={ + 'global': flexmock(dry_run=False, log_file='foo'), + 'repo-create': flexmock(), + }, config_filename=flexmock(), config={'repositories': []}, config_paths=[], @@ -850,16 +853,16 @@ def test_run_actions_runs_restore(): ) -def test_run_actions_runs_rlist(): +def test_run_actions_runs_repo_list(): flexmock(module).should_receive('add_custom_log_levels') flexmock(module).should_receive('get_skip_actions').and_return([]) flexmock(module.command).should_receive('execute_hook') expected = flexmock() - flexmock(borgmatic.actions.rlist).should_receive('run_rlist').and_yield(expected).once() + flexmock(borgmatic.actions.repo_list).should_receive('run_repo_list').and_yield(expected).once() result = tuple( module.run_actions( - arguments={'global': flexmock(dry_run=False, log_file='foo'), 'rlist': flexmock()}, + arguments={'global': flexmock(dry_run=False, log_file='foo'), 'repo-list': flexmock()}, config_filename=flexmock(), config={'repositories': []}, config_paths=[], @@ -894,16 +897,16 @@ def test_run_actions_runs_list(): assert result == (expected,) -def test_run_actions_runs_rinfo(): +def test_run_actions_runs_repo_info(): flexmock(module).should_receive('add_custom_log_levels') flexmock(module).should_receive('get_skip_actions').and_return([]) flexmock(module.command).should_receive('execute_hook') expected = flexmock() - flexmock(borgmatic.actions.rinfo).should_receive('run_rinfo').and_yield(expected).once() + flexmock(borgmatic.actions.repo_info).should_receive('run_repo_info').and_yield(expected).once() result = tuple( module.run_actions( - arguments={'global': flexmock(dry_run=False, log_file='foo'), 'rinfo': flexmock()}, + arguments={'global': flexmock(dry_run=False, log_file='foo'), 'repo-info': flexmock()}, config_filename=flexmock(), config={'repositories': []}, config_paths=[], @@ -998,15 +1001,18 @@ def test_run_actions_runs_delete(): ) -def test_run_actions_runs_rdelete(): +def test_run_actions_runs_repo_delete(): flexmock(module).should_receive('add_custom_log_levels') flexmock(module).should_receive('get_skip_actions').and_return([]) flexmock(module.command).should_receive('execute_hook') - flexmock(borgmatic.actions.rdelete).should_receive('run_rdelete').once() + flexmock(borgmatic.actions.repo_delete).should_receive('run_repo_delete').once() tuple( module.run_actions( - arguments={'global': flexmock(dry_run=False, log_file='foo'), 'rdelete': flexmock()}, + arguments={ + 'global': flexmock(dry_run=False, log_file='foo'), + 'repo-delete': flexmock(), + }, config_filename=flexmock(), config={'repositories': []}, config_paths=[],