public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/portage:master commit in: lib/portage/, lib/portage/tests/util/
@ 2022-10-17 19:37 Sam James
  0 siblings, 0 replies; only message in thread
From: Sam James @ 2022-10-17 19:37 UTC (permalink / raw
  To: gentoo-commits

commit:     bd0b901ff3024fbb2289b370bde475b4b435294c
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Oct  7 19:14:28 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Oct 17 19:37:16 2022 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=bd0b901f

portage: manifest: fix Manifest.addFile() call to renamed updateFileHashes

Bug: https://bugs.gentoo.org/875860
Fixes: 5ac2a8f08101501d0416ad9d79e277c363cea85e
Fixes: 64d84ce2d9a333e83e2a5fba5e7ec95f936959e7
Closes: https://github.com/gentoo/portage/pull/921
Signed-off-by: Sam James <sam <AT> gentoo.org>

 lib/portage/manifest.py                 | 16 ++++++++--------
 lib/portage/tests/util/test_manifest.py | 31 +++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 8 deletions(-)

diff --git a/lib/portage/manifest.py b/lib/portage/manifest.py
index 65dda211b..6c0968415 100644
--- a/lib/portage/manifest.py
+++ b/lib/portage/manifest.py
@@ -464,21 +464,21 @@ class Manifest:
 
     def addFile(self, ftype, fname, hashdict=None, ignoreMissing=False):
         """Add entry to Manifest optionally using hashdict to avoid recalculation of hashes"""
-        if ftype == "AUX":
-            if not fname.startswith("files/"):
-                fname = os.path.join("files", fname)
-            if fname.startswith("files"):
-                fname = fname[6:]
+        if ftype == "AUX" and not fname.startswith("files/"):
+            fname = os.path.join("files", fname)
         if not os.path.exists(f"{self.pkgdir}{fname}") and not ignoreMissing:
             raise FileNotFound(fname)
         if ftype not in MANIFEST2_IDENTIFIERS:
             raise InvalidDataType(ftype)
+
+        if fname.startswith("files"):
+            fname = fname[6:]
         self.fhashdict[ftype][fname] = {}
         if hashdict is not None:
             self.fhashdict[ftype][fname].update(hashdict)
         if self.required_hashes.difference(set(self.fhashdict[ftype][fname])):
-            self.updateFileHashes(
-                ftype, fname, checkExisting=False, ignoreMissing=ignoreMissing
+            self.updateAllFileHashes(
+                ftype, [fname], checkExisting=False, ignoreMissing=ignoreMissing
             )
 
     def removeFile(self, ftype, fname):
@@ -775,7 +775,7 @@ class Manifest:
 
     def updateHashesGuessType(self, fname, *args, **kwargs):
         """Regenerate hashes for the given file (guesses the type and then
-        calls updateFileHashes)."""
+        calls updateAllFileHashes)."""
         mytype = self.guessType(fname)
         if mytype is None:
             return

diff --git a/lib/portage/tests/util/test_manifest.py b/lib/portage/tests/util/test_manifest.py
new file mode 100644
index 000000000..49bcbc1a5
--- /dev/null
+++ b/lib/portage/tests/util/test_manifest.py
@@ -0,0 +1,31 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+import tempfile
+
+from pathlib import Path
+from portage import Manifest
+from portage.tests import TestCase
+
+
+class ManifestTestCase(TestCase):
+    def test_simple_addFile(self):
+        tempdir = Path(tempfile.mkdtemp()) / "app-portage" / "diffball"
+        manifest = Manifest(str(tempdir), required_hashes=["SHA512", "BLAKE2B"])
+
+        (tempdir / "files").mkdir(parents=True)
+        (tempdir / "files" / "test.patch").write_text(
+            "Fix the diffball foobar functionality.\n"
+        )
+
+        # Nothing should be in the Manifest yet
+        with self.assertRaises(KeyError):
+            manifest.getFileData("AUX", "test.patch", "SHA512")
+
+        manifest.addFile("AUX", "files/test.patch")
+
+        self.assertEqual(len(manifest.fhashdict["AUX"].keys()), 1)
+        self.assertEqual(
+            manifest.getFileData("AUX", "test.patch", "SHA512"),
+            "e30d069dcf284cbcb2d5685f03ca362469026b469dec4f8655d0c9a2bf317f5d9f68f61855ea403f4959bc0b9c003ae824fb9d6ab2472a739950623523af9da9",
+        )


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2022-10-17 19:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-17 19:37 [gentoo-commits] proj/portage:master commit in: lib/portage/, lib/portage/tests/util/ Sam James

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox