From 435ac57ea627a521e0232bcc78ac7cdbefd1d166 Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Sat, 17 Sep 2022 15:38:41 +0200 Subject: Do not verify Manifests when calling update_entry_for_path() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Górny --- gemato/recursiveloader.py | 7 ++++++- tests/test_recursiveloader.py | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) 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, -- cgit v1.2.3