Browse Source

add tests and remove magic number

Divyansh Singh 2 years ago
parent
commit
39ad8f64c4

+ 1 - 5
borgmatic/borg/export_tar.py

@@ -46,11 +46,7 @@ def export_tar_archive(
         + (('--dry-run',) if dry_run else ())
         + (('--dry-run',) if dry_run else ())
         + (('--tar-filter', tar_filter) if tar_filter else ())
         + (('--tar-filter', tar_filter) if tar_filter else ())
         + (('--strip-components', str(strip_components)) if strip_components else ())
         + (('--strip-components', str(strip_components)) if strip_components else ())
-        + flags.make_repository_archive_flags(
-            repository,
-            archive,
-            local_borg_version,
-        )
+        + flags.make_repository_archive_flags(repository, archive, local_borg_version,)
         + (destination_path,)
         + (destination_path,)
         + (tuple(paths) if paths else ())
         + (tuple(paths) if paths else ())
     )
     )

+ 1 - 5
borgmatic/borg/extract.py

@@ -106,11 +106,7 @@ def extract_archive(
         + (('--strip-components', str(strip_components)) if strip_components else ())
         + (('--strip-components', str(strip_components)) if strip_components else ())
         + (('--progress',) if progress else ())
         + (('--progress',) if progress else ())
         + (('--stdout',) if extract_to_stdout else ())
         + (('--stdout',) if extract_to_stdout else ())
-        + flags.make_repository_archive_flags(
-            repository,
-            archive,
-            local_borg_version,
-        )
+        + flags.make_repository_archive_flags(repository, archive, local_borg_version,)
         + (tuple(paths) if paths else ())
         + (tuple(paths) if paths else ())
     )
     )
 
 

+ 3 - 1
borgmatic/config/normalize.py

@@ -71,7 +71,9 @@ def normalize(config_filename, config):
                 )
                 )
             if ':' in repository:
             if ':' in repository:
                 if repository.startswith('file://'):
                 if repository.startswith('file://'):
-                    config['location']['repositories'].append(os.path.abspath(repository[7:]))
+                    config['location']['repositories'].append(
+                        os.path.abspath(repository.partition('file://')[-1])
+                    )
                 elif repository.startswith('ssh://'):
                 elif repository.startswith('ssh://'):
                     config['location']['repositories'].append(repository)
                     config['location']['repositories'].append(repository)
                 else:
                 else:

+ 1 - 1
borgmatic/config/validate.py

@@ -131,7 +131,7 @@ def normalize_repository_path(repository):
     if ':' not in repository:
     if ':' not in repository:
         return os.path.abspath(repository)
         return os.path.abspath(repository)
     elif repository.startswith('file://'):
     elif repository.startswith('file://'):
-        return os.path.abspath(repository[7:])
+        return os.path.abspath(repository.partition('file://')[-1])
     else:
     else:
         return repository
         return repository
 
 

+ 5 - 0
tests/unit/config/test_normalize.py

@@ -87,6 +87,11 @@ from borgmatic.config import normalize as module
             {'location': {'repositories': ['ssh://foo@bar:1234/repo']}},
             {'location': {'repositories': ['ssh://foo@bar:1234/repo']}},
             False,
             False,
         ),
         ),
+        (
+            {'location': {'repositories': ['file:///repo']}},
+            {'location': {'repositories': ['/repo']}},
+            False,
+        ),
     ),
     ),
 )
 )
 def test_normalize_applies_hard_coded_normalization_to_config(
 def test_normalize_applies_hard_coded_normalization_to_config(

+ 7 - 0
tests/unit/config/test_validate.py

@@ -83,6 +83,13 @@ def test_normalize_repository_path_passes_through_remote_repository():
     module.normalize_repository_path(repository) == repository
     module.normalize_repository_path(repository) == repository
 
 
 
 
+def test_normalize_repository_path_passes_through_file_repository():
+    repository = 'file:///foo/bar/test.borg'
+    flexmock(module.os.path).should_receive('abspath').and_return('/foo/bar/test.borg')
+
+    module.normalize_repository_path(repository) == '/foo/bar/test.borg'
+
+
 def test_normalize_repository_path_passes_through_absolute_repository():
 def test_normalize_repository_path_passes_through_absolute_repository():
     repository = '/foo/bar/test.borg'
     repository = '/foo/bar/test.borg'
     flexmock(module.os.path).should_receive('abspath').and_return(repository)
     flexmock(module.os.path).should_receive('abspath').and_return(repository)