summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2022-09-17 15:38:41 +0200
committerMichał Górny <mgorny@gentoo.org>2022-09-17 15:38:41 +0200
commit435ac57ea627a521e0232bcc78ac7cdbefd1d166 (patch)
tree1b040424259b05c7af327b61fa2783049d79d1df
parentb4f955f1245ecdb7d13500bd0bd758918956c362 (diff)
downloadgemato-435ac57ea627a521e0232bcc78ac7cdbefd1d166.tar.gz
Do not verify Manifests when calling update_entry_for_path()
Signed-off-by: Michał Górny <mgorny@gentoo.org>
-rw-r--r--gemato/recursiveloader.py7
-rw-r--r--tests/test_recursiveloader.py20
2 files changed, 26 insertions, 1 deletions
diff --git a/gemato/recursiveloader.py b/gemato/recursiveloader.py
index 11b9642..fa7acb9 100644
--- a/gemato/recursiveloader.py
+++ b/gemato/recursiveloader.py
@@ -843,6 +843,7 @@ class ManifestRecursiveLoader:
path,
new_entry_type='DATA',
hashes=None,
+ verify_manifests=False,
):
"""
Update the Manifest entries for @path and queue the containing
@@ -873,6 +874,10 @@ class ManifestRecursiveLoader:
@hashes specifies the requested hash set. If the effective value
is None, the routine reuses the existing hash set in the entry.
When creating a new entry, @hashes must be non-null.
+
+ @verify_manifests determines whether loaded Manifests will
+ be verified against MANIFEST entries. Disabled by default since
+ the MANIFEST entries would be updated anyway.
"""
had_entry = False
@@ -883,7 +888,7 @@ class ManifestRecursiveLoader:
if insecure or not hashes:
raise ManifestInsecureHashes(insecure)
- self.load_manifests_for_path(path)
+ self.load_manifests_for_path(path, verify=verify_manifests)
for mpath, relpath, m in self._iter_manifests_for_path(path):
entries_to_remove = []
for e in m.entries:
diff --git a/tests/test_recursiveloader.py b/tests/test_recursiveloader.py
index ed24d03..5cbd4d8 100644
--- a/tests/test_recursiveloader.py
+++ b/tests/test_recursiveloader.py
@@ -1834,6 +1834,26 @@ def test_update_entry_for_path_no_hash_specified(layout_factory):
{'Manifest':
'MANIFEST a/Manifest 50 MD5 0f7cd9ed779a4844f98d28315dd9176a\n',
}),
+ (SubManifestMismatchLayout,
+ ["MD5"],
+ ManifestRecursiveLoader.update_entry_for_path,
+ "a/Manifest",
+ None,
+ None,
+ {"Manifest":
+ "MANIFEST a/Manifest 50 MD5 0f7cd9ed779a4844f98d28315dd9176a\n",
+ }),
+ (SubManifestMismatchLayout,
+ ["MD5"],
+ ManifestRecursiveLoader.update_entry_for_path,
+ "a/test",
+ None,
+ None,
+ {"Manifest":
+ "MANIFEST a/Manifest 49 MD5 b86a7748346d54c6455886306f017e6c\n",
+ "a/Manifest":
+ "DATA test 0 MD5 d41d8cd98f00b204e9800998ecf8427e\n",
+ }),
(NonexistingDirectoryLayout,
['MD5'],
ManifestRecursiveLoader.update_entry_for_path,