public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/portage:master commit in: lib/portage/dbapi/, lib/portage/tests/emerge/, lib/portage/tests/dbapi/
@ 2022-09-25 19:12 Mike Gilbert
  0 siblings, 0 replies; only message in thread
From: Mike Gilbert @ 2022-09-25 19:12 UTC (permalink / raw
  To: gentoo-commits

commit:     31c04f4b5b014a6a80ad4d1c2c8574106bab2c56
Author:     David Palao <david.palao <AT> gmail <DOT> com>
AuthorDate: Fri Sep 16 15:08:41 2022 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sun Sep 25 19:10:34 2022 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=31c04f4b

improvement(bintree)!: binarytree.populate has new default getbinpkg_refresh=False

This, together with a previous commit, fixes Bug #864259:

sys-apps/portage: fetches binhost's 'Packages' file multiple times

Bug: https://bugs.gentoo.org/864259
Signed-off-by: David Palao <david.palao <AT> gmail.com>
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 lib/portage/dbapi/bintree.py             |  2 +-
 lib/portage/tests/dbapi/test_bintree.py  | 17 +++++++++++++++++
 lib/portage/tests/emerge/test_actions.py |  5 +++++
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/lib/portage/dbapi/bintree.py b/lib/portage/dbapi/bintree.py
index cea9378d5..c8bb2c88e 100644
--- a/lib/portage/dbapi/bintree.py
+++ b/lib/portage/dbapi/bintree.py
@@ -807,7 +807,7 @@ class binarytree:
             except PortageException:
                 pass
 
-    def populate(self, getbinpkgs=False, getbinpkg_refresh=True, add_repos=()):
+    def populate(self, getbinpkgs=False, getbinpkg_refresh=False, add_repos=()):
         """
         Populates the binarytree with package metadata.
 

diff --git a/lib/portage/tests/dbapi/test_bintree.py b/lib/portage/tests/dbapi/test_bintree.py
index 881d8ff48..4b4982a54 100644
--- a/lib/portage/tests/dbapi/test_bintree.py
+++ b/lib/portage/tests/dbapi/test_bintree.py
@@ -136,3 +136,20 @@ class BinarytreeTestCase(TestCase):
             ),
             noiselevel=-1,
         )
+
+    @patch("portage.dbapi.bintree.BinRepoConfigLoader")
+    @patch("portage.dbapi.bintree.binarytree._populate_remote")
+    @patch("portage.dbapi.bintree.binarytree._populate_local")
+    def test_default_getbinpkg_refresh_in_populate(
+        self, ppopulate_local, ppopulate_remote, pBinRepoConfigLoader
+    ):
+        """Bug #864259
+        This test fixes the bug. It requires that
+        ``_emerge.actions.run_action`` calls ``binarytree.populate``
+        explicitly with ``getbinpkg_refresh=True``
+        """
+        settings = MagicMock()
+        settings.__getitem__.return_value = "/some/path"
+        bt = binarytree(pkgdir="/tmp", settings=settings)
+        bt.populate(getbinpkgs=True)
+        ppopulate_remote.assert_called_once_with(getbinpkg_refresh=False)

diff --git a/lib/portage/tests/emerge/test_actions.py b/lib/portage/tests/emerge/test_actions.py
index 014d39dd9..ee59cef5e 100644
--- a/lib/portage/tests/emerge/test_actions.py
+++ b/lib/portage/tests/emerge/test_actions.py
@@ -30,6 +30,11 @@ class RunActionTestCase(TestCase):
             papply,
             padjust,
             profile_ckeck):
+        """Ensure that ``binarytree.populate`` API is correctly used.
+        The point of this test is to ensure that the ``populate`` method
+        is called as expected: since it is the first time that ``populate``
+        is called, it must use ``getbinpkg_refresh=True``.
+        """
         config = MagicMock()
         config.action = None
         config.opts = {"--quiet": True, "--usepkg": True}


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

only message in thread, other threads:[~2022-09-25 19:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-25 19:12 [gentoo-commits] proj/portage:master commit in: lib/portage/dbapi/, lib/portage/tests/emerge/, lib/portage/tests/dbapi/ Mike Gilbert

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