Browse Source

_CollectionStatus._parse(): read archive dir path

Fabian Peter Hammerle 7 years ago
parent
commit
1c1b27f6f4
2 changed files with 24 additions and 16 deletions
  1. 3 1
      duplitab/__init__.py
  2. 21 15
      tests/test_collection.py

+ 3 - 1
duplitab/__init__.py

@@ -42,7 +42,8 @@ class _CollectionStatus(_Status):
 
     chain_separator_regex = r'-{25}\s'
 
-    def __init__(self, primary_chain):
+    def __init__(self, archive_dir_path, primary_chain):
+        self.archive_dir_path = archive_dir_path
         self.primary_chain = primary_chain
 
     @property
@@ -65,6 +66,7 @@ class _CollectionStatus(_Status):
                 text=primary_chain_match.group(1),
             )
         return cls(
+            archive_dir_path=re.search(r'Archive dir: (.*)', text).group(1),
             primary_chain=primary_chain,
         )
 

+ 21 - 15
tests/test_collection.py

@@ -45,47 +45,50 @@ def test_collection_init_fail(init_kwargs, ex_class):
         duplitab.Collection(**init_kwargs)
 
 
-@pytest.mark.parametrize(('url', 'expected_status'), [
+@pytest.mark.parametrize(('url', 'expected_status_attr'), [
     [
         'file://{}'.format(os.path.join(test_collections_dir_path, 'empty', 'only-full')),
-        duplitab._CollectionStatus(
-            primary_chain=duplitab._ChainStatus(
+        {
+            'primary_chain': duplitab._ChainStatus(
                 sets=[
                     duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 33)),
                 ]),
-        ),
+        },
     ],
     [
         'file://{}'.format(os.path.join(test_collections_dir_path, 'empty', 'single-full')),
-        duplitab._CollectionStatus(
-            primary_chain=duplitab._ChainStatus(
+        {
+            'primary_chain': duplitab._ChainStatus(
                 sets=[
                     duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 33)),
                     duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 35)),
                     duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 39)),
                 ]),
-        ),
+        },
     ],
     [
         'file://{}'.format(os.path.join(test_collections_dir_path, 'empty', 'multiple-full')),
-        duplitab._CollectionStatus(
-            primary_chain=duplitab._ChainStatus(
+        {
+            'primary_chain': duplitab._ChainStatus(
                 sets=[
                     duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 47)),
                     duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 54)),
                 ]),
-        ),
+        },
     ],
     [
         'file://{}'.format(os.path.join(test_collections_dir_path, 'none')),
-        duplitab._CollectionStatus(
-            primary_chain=None,
-        ),
+        {
+            'primary_chain': None,
+        },
     ],
 ])
-def test_collection_request_status(url, expected_status):
+def test_collection_request_status(url, expected_status_attr):
     c = duplitab.Collection(url=url)
-    assert expected_status == c.request_status()
+    s = c.request_status()
+    assert not s.archive_dir_path is None
+    for name, value in expected_status_attr.items():
+        assert value == getattr(s, name)
 
 
 @pytest.mark.parametrize(('chain_status', 'expected_time'), [
@@ -113,6 +116,7 @@ def test_chain_status_get_last_backup_time(chain_status, expected_time):
 @pytest.mark.parametrize(('collection_status', 'expected_time'), [
     [
         duplitab._CollectionStatus(
+            archive_dir_path='/tmp/none',
             primary_chain=duplitab._ChainStatus(
                 sets=[
                     duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 33)),
@@ -122,6 +126,7 @@ def test_chain_status_get_last_backup_time(chain_status, expected_time):
     ],
     [
         duplitab._CollectionStatus(
+            archive_dir_path='/tmp/none',
             primary_chain=duplitab._ChainStatus(
                 sets=[
                     duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 33)),
@@ -133,6 +138,7 @@ def test_chain_status_get_last_backup_time(chain_status, expected_time):
     ],
     [
         duplitab._CollectionStatus(
+            archive_dir_path='/tmp/none',
             primary_chain=None,
         ),
         None,