|
@@ -1147,62 +1147,6 @@ def test_create_archive_with_read_special_calls_borg_with_read_special_parameter
|
|
|
)
|
|
|
|
|
|
|
|
|
-def test_create_archive_with_read_special_adds_special_files_to_excludes():
|
|
|
- flexmock(module).should_receive('collect_borgmatic_source_directories').and_return([])
|
|
|
- flexmock(module).should_receive('deduplicate_directories').and_return(('foo', 'bar'))
|
|
|
- flexmock(module).should_receive('map_directories_to_devices').and_return({})
|
|
|
- flexmock(module).should_receive('expand_directories').and_return(())
|
|
|
- flexmock(module).should_receive('pattern_root_directories').and_return([])
|
|
|
- flexmock(module.os.path).should_receive('expanduser').and_raise(TypeError)
|
|
|
- flexmock(module).should_receive('expand_home_directories').and_return(()).and_return(
|
|
|
- ('special',)
|
|
|
- )
|
|
|
- flexmock(module).should_receive('write_pattern_file').and_return(None).and_return(
|
|
|
- flexmock(name='/excludes')
|
|
|
- )
|
|
|
- flexmock(module.feature).should_receive('available').and_return(True)
|
|
|
- flexmock(module).should_receive('ensure_files_readable')
|
|
|
- flexmock(module).should_receive('make_pattern_flags').and_return(())
|
|
|
- flexmock(module).should_receive('make_exclude_flags').and_return(()).and_return(
|
|
|
- '--exclude-from', '/excludes'
|
|
|
- )
|
|
|
- flexmock(module.flags).should_receive('make_repository_archive_flags').and_return(
|
|
|
- (f'repo::{DEFAULT_ARCHIVE_NAME}',)
|
|
|
- )
|
|
|
- flexmock(module.environment).should_receive('make_environment')
|
|
|
- flexmock(module).should_receive('collect_special_file_paths').and_return(('special',))
|
|
|
- create_command = ('borg', 'create', '--read-special') + REPO_ARCHIVE_WITH_PATHS
|
|
|
- flexmock(module).should_receive('execute_command').with_args(
|
|
|
- create_command + ('--dry-run', '--list'),
|
|
|
- output_log_level=logging.INFO,
|
|
|
- output_file=None,
|
|
|
- borg_local_path='borg',
|
|
|
- working_directory=None,
|
|
|
- extra_environment=None,
|
|
|
- )
|
|
|
- flexmock(module).should_receive('execute_command').with_args(
|
|
|
- create_command + ('--exclude-from', '/excludes'),
|
|
|
- output_log_level=logging.INFO,
|
|
|
- output_file=None,
|
|
|
- borg_local_path='borg',
|
|
|
- working_directory=None,
|
|
|
- extra_environment=None,
|
|
|
- )
|
|
|
-
|
|
|
- module.create_archive(
|
|
|
- dry_run=False,
|
|
|
- repository='repo',
|
|
|
- location_config={
|
|
|
- 'source_directories': ['foo', 'bar'],
|
|
|
- 'repositories': ['repo'],
|
|
|
- 'read_special': True,
|
|
|
- 'exclude_patterns': None,
|
|
|
- },
|
|
|
- storage_config={},
|
|
|
- local_borg_version='1.2.3',
|
|
|
- )
|
|
|
-
|
|
|
-
|
|
|
@pytest.mark.parametrize(
|
|
|
'option_name,option_value',
|
|
|
(('ctime', True), ('ctime', False), ('birthtime', True), ('birthtime', False),),
|
|
@@ -1911,6 +1855,131 @@ def test_create_archive_with_stream_processes_ignores_read_special_false_and_log
|
|
|
)
|
|
|
|
|
|
|
|
|
+def test_create_archive_with_stream_processes_adds_special_files_to_excludes():
|
|
|
+ processes = flexmock()
|
|
|
+ flexmock(module).should_receive('collect_borgmatic_source_directories').and_return([])
|
|
|
+ flexmock(module).should_receive('deduplicate_directories').and_return(('foo', 'bar'))
|
|
|
+ flexmock(module).should_receive('map_directories_to_devices').and_return({})
|
|
|
+ flexmock(module).should_receive('expand_directories').and_return(())
|
|
|
+ flexmock(module).should_receive('pattern_root_directories').and_return([])
|
|
|
+ flexmock(module.os.path).should_receive('expanduser').and_raise(TypeError)
|
|
|
+ flexmock(module).should_receive('expand_home_directories').and_return(()).and_return(
|
|
|
+ ('special',)
|
|
|
+ )
|
|
|
+ flexmock(module).should_receive('write_pattern_file').and_return(None).and_return(
|
|
|
+ flexmock(name='/excludes')
|
|
|
+ )
|
|
|
+ flexmock(module.feature).should_receive('available').and_return(True)
|
|
|
+ flexmock(module).should_receive('ensure_files_readable')
|
|
|
+ flexmock(module).should_receive('make_pattern_flags').and_return(())
|
|
|
+ flexmock(module).should_receive('make_exclude_flags').and_return(()).and_return(
|
|
|
+ '--exclude-from', '/excludes'
|
|
|
+ )
|
|
|
+ flexmock(module.flags).should_receive('make_repository_archive_flags').and_return(
|
|
|
+ (f'repo::{DEFAULT_ARCHIVE_NAME}',)
|
|
|
+ )
|
|
|
+ flexmock(module.environment).should_receive('make_environment')
|
|
|
+ flexmock(module).should_receive('collect_special_file_paths').and_return(('special',))
|
|
|
+ create_command = (
|
|
|
+ 'borg',
|
|
|
+ 'create',
|
|
|
+ '--one-file-system',
|
|
|
+ '--read-special',
|
|
|
+ ) + REPO_ARCHIVE_WITH_PATHS
|
|
|
+ flexmock(module).should_receive('execute_command_with_processes').with_args(
|
|
|
+ create_command + ('--dry-run', '--list'),
|
|
|
+ processes=processes,
|
|
|
+ output_log_level=logging.INFO,
|
|
|
+ output_file=None,
|
|
|
+ borg_local_path='borg',
|
|
|
+ working_directory=None,
|
|
|
+ extra_environment=None,
|
|
|
+ )
|
|
|
+ flexmock(module).should_receive('execute_command_with_processes').with_args(
|
|
|
+ create_command + ('--exclude-from', '/excludes'),
|
|
|
+ processes=processes,
|
|
|
+ output_log_level=logging.INFO,
|
|
|
+ output_file=None,
|
|
|
+ borg_local_path='borg',
|
|
|
+ working_directory=None,
|
|
|
+ extra_environment=None,
|
|
|
+ )
|
|
|
+
|
|
|
+ module.create_archive(
|
|
|
+ dry_run=False,
|
|
|
+ repository='repo',
|
|
|
+ location_config={
|
|
|
+ 'source_directories': ['foo', 'bar'],
|
|
|
+ 'repositories': ['repo'],
|
|
|
+ 'exclude_patterns': None,
|
|
|
+ },
|
|
|
+ storage_config={},
|
|
|
+ local_borg_version='1.2.3',
|
|
|
+ stream_processes=processes,
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+def test_create_archive_with_stream_processes_and_read_special_does_not_add_special_files_to_excludes():
|
|
|
+ processes = flexmock()
|
|
|
+ flexmock(module).should_receive('collect_borgmatic_source_directories').and_return([])
|
|
|
+ flexmock(module).should_receive('deduplicate_directories').and_return(('foo', 'bar'))
|
|
|
+ flexmock(module).should_receive('map_directories_to_devices').and_return({})
|
|
|
+ flexmock(module).should_receive('expand_directories').and_return(())
|
|
|
+ flexmock(module).should_receive('pattern_root_directories').and_return([])
|
|
|
+ flexmock(module.os.path).should_receive('expanduser').and_raise(TypeError)
|
|
|
+ flexmock(module).should_receive('expand_home_directories').and_return(()).and_return(
|
|
|
+ ('special',)
|
|
|
+ )
|
|
|
+ flexmock(module).should_receive('write_pattern_file').and_return(None)
|
|
|
+ flexmock(module.feature).should_receive('available').and_return(True)
|
|
|
+ flexmock(module).should_receive('ensure_files_readable')
|
|
|
+ flexmock(module).should_receive('make_pattern_flags').and_return(())
|
|
|
+ flexmock(module).should_receive('make_exclude_flags').and_return(())
|
|
|
+ flexmock(module.flags).should_receive('make_repository_archive_flags').and_return(
|
|
|
+ (f'repo::{DEFAULT_ARCHIVE_NAME}',)
|
|
|
+ )
|
|
|
+ flexmock(module.environment).should_receive('make_environment')
|
|
|
+ flexmock(module).should_receive('collect_special_file_paths').and_return(('special',))
|
|
|
+ create_command = (
|
|
|
+ 'borg',
|
|
|
+ 'create',
|
|
|
+ '--one-file-system',
|
|
|
+ '--read-special',
|
|
|
+ ) + REPO_ARCHIVE_WITH_PATHS
|
|
|
+ flexmock(module).should_receive('execute_command_with_processes').with_args(
|
|
|
+ create_command + ('--dry-run', '--list'),
|
|
|
+ processes=processes,
|
|
|
+ output_log_level=logging.INFO,
|
|
|
+ output_file=None,
|
|
|
+ borg_local_path='borg',
|
|
|
+ working_directory=None,
|
|
|
+ extra_environment=None,
|
|
|
+ )
|
|
|
+ flexmock(module).should_receive('execute_command_with_processes').with_args(
|
|
|
+ create_command,
|
|
|
+ processes=processes,
|
|
|
+ output_log_level=logging.INFO,
|
|
|
+ output_file=None,
|
|
|
+ borg_local_path='borg',
|
|
|
+ working_directory=None,
|
|
|
+ extra_environment=None,
|
|
|
+ )
|
|
|
+
|
|
|
+ module.create_archive(
|
|
|
+ dry_run=False,
|
|
|
+ repository='repo',
|
|
|
+ location_config={
|
|
|
+ 'source_directories': ['foo', 'bar'],
|
|
|
+ 'repositories': ['repo'],
|
|
|
+ 'exclude_patterns': None,
|
|
|
+ 'read_special': True,
|
|
|
+ },
|
|
|
+ storage_config={},
|
|
|
+ local_borg_version='1.2.3',
|
|
|
+ stream_processes=processes,
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
def test_create_archive_with_json_calls_borg_with_json_parameter():
|
|
|
flexmock(module).should_receive('collect_borgmatic_source_directories').and_return([])
|
|
|
flexmock(module).should_receive('deduplicate_directories').and_return(('foo', 'bar'))
|