[gentoo-commits] proj/portage:master commit in: lib/portage/tests/dbapi/, lib/portage/tests/resolver/

2024-02-21 Thread Zac Medico
commit: 0dedea99ac13e0e75a83a78890ed73bced1b950b
Author: Zac Medico  gentoo  org>
AuthorDate: Tue Feb 13 04:21:26 2024 +
Commit: Zac Medico  gentoo  org>
CommitDate: Wed Feb 21 15:27:31 2024 +
URL:https://gitweb.gentoo.org/proj/portage.git/commit/?id=0dedea99

ResolverPlayground: Use egencache to create manifests

Make the ResolverPlayground _create_ebuild_manifests method
call egencache --jobs, which reliably triggers the KeyError
from bug 924319 for multiple tests:

lib/portage/tests/bin/test_doins.py::DoIns::testDoInsFallback Exception in 
callback EbuildMetadataPhase._async_start_done()
handle: )>
Traceback (most recent call last):
  File "/usr/lib/python3.12/asyncio/events.py", line 88, in _run
self._context.run(self._callback, *self._args)
  File "lib/_emerge/EbuildMetadataPhase.py", line 154, in _async_start_done
future.cancelled() or future.result()
  ^^^
  File "lib/_emerge/EbuildMetadataPhase.py", line 130, in _async_start
retval = portage.doebuild(
 ^
  File "lib/portage/package/ebuild/doebuild.py", line 1030, in doebuild
doebuild_environment(
  File "lib/portage/package/ebuild/doebuild.py", line 519, in 
doebuild_environment
eapi = mysettings.configdict["pkg"]["EAPI"]
   
  File "lib/portage/util/__init__.py", line 1684, in __getitem__
return UserDict.__getitem__(self, item_key)
   
  File "lib/portage/cache/mappings.py", line 175, in __getitem__
return self.data[key]
   ~^
KeyError: 'EAPI'

Bug: https://bugs.gentoo.org/924319
Signed-off-by: Zac Medico  gentoo.org>

 lib/portage/tests/dbapi/test_portdb_cache.py |  4 ++-
 lib/portage/tests/resolver/ResolverPlayground.py | 38 +---
 2 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/lib/portage/tests/dbapi/test_portdb_cache.py 
b/lib/portage/tests/dbapi/test_portdb_cache.py
index c7c6913b49..c24a4f2098 100644
--- a/lib/portage/tests/dbapi/test_portdb_cache.py
+++ b/lib/portage/tests/dbapi/test_portdb_cache.py
@@ -1,6 +1,7 @@
-# Copyright 2012-2023 Gentoo Authors
+# Copyright 2012-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
+import shutil
 import subprocess
 import sys
 import textwrap
@@ -63,6 +64,7 @@ class PortdbCacheTestCase(TestCase):
 python_cmd = (portage_python, "-b", "-Wd", "-c")
 
 test_commands = (
+(lambda: shutil.rmtree(md5_cache_dir) or True,),
 (lambda: not os.path.exists(pms_cache_dir),),
 (lambda: not os.path.exists(md5_cache_dir),),
 python_cmd

diff --git a/lib/portage/tests/resolver/ResolverPlayground.py 
b/lib/portage/tests/resolver/ResolverPlayground.py
index 2d26012873..75c86b615c 100644
--- a/lib/portage/tests/resolver/ResolverPlayground.py
+++ b/lib/portage/tests/resolver/ResolverPlayground.py
@@ -3,6 +3,7 @@
 
 import bz2
 import fnmatch
+import subprocess
 import tempfile
 import portage
 
@@ -18,8 +19,6 @@ from portage.const import (
 from portage.process import find_binary
 from portage.dep import Atom, _repo_separator
 from portage.dbapi.bintree import binarytree
-from portage.package.ebuild.config import config
-from portage.package.ebuild.digestgen import digestgen
 from portage._sets import load_default_config
 from portage._sets.base import InternalPackageSet
 from portage.tests import cnf_path
@@ -323,22 +322,25 @@ class ResolverPlayground:
 f.write(misc_content)
 
 def _create_ebuild_manifests(self, ebuilds):
-tmpsettings = config(clone=self.settings)
-tmpsettings["PORTAGE_QUIET"] = "1"
-for cpv in ebuilds:
-a = Atom("=" + cpv, allow_repo=True)
-repo = a.repo
-if repo is None:
-repo = "test_repo"
-
-repo_dir = self._get_repo_dir(repo)
-ebuild_dir = os.path.join(repo_dir, a.cp)
-ebuild_path = os.path.join(ebuild_dir, a.cpv.split("/")[1] + 
".ebuild")
-
-portdb = self.trees[self.eroot]["porttree"].dbapi
-tmpsettings["O"] = ebuild_dir
-if not digestgen(mysettings=tmpsettings, myportdb=portdb):
-raise AssertionError(f"digest creation failed for 
{ebuild_path}")
+for repo_name in self._repositories:
+if repo_name == "DEFAULT":
+continue
+egencache_cmd = [
+"egencache",
+f"--repo={repo_name}",
+"--update",
+"--update-manifests",
+"--sign-manifests=n",
+"--strict-manifests=n",
+
f"--repositories-configuration={self.settings['PORTAGE_REPOSITORIES']}",
+f"--jobs={portage.util.cpuinfo.get_cpu_count()}",
+]
+result = subprocess.run(
+egencache_cmd,
+ 

[gentoo-commits] proj/portage:master commit in: lib/portage/tests/dbapi/, lib/portage/tests/resolver/

2020-01-21 Thread Zac Medico
commit: 410818d2c733bd5961d51191083b423ef53761b1
Author: Zac Medico  gentoo  org>
AuthorDate: Tue Jan 21 08:04:33 2020 +
Commit: Zac Medico  gentoo  org>
CommitDate: Tue Jan 21 08:06:41 2020 +
URL:https://gitweb.gentoo.org/proj/portage.git/commit/?id=410818d2

Test /etc/portage/modules portdbapi.auxdbmodule settings

Signed-off-by: Zac Medico  gentoo.org>

 lib/portage/tests/dbapi/test_auxdb.py| 50 
 lib/portage/tests/resolver/ResolverPlayground.py |  2 +-
 2 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/lib/portage/tests/dbapi/test_auxdb.py 
b/lib/portage/tests/dbapi/test_auxdb.py
new file mode 100644
index 0..73fc2b2c3
--- /dev/null
+++ b/lib/portage/tests/dbapi/test_auxdb.py
@@ -0,0 +1,50 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+from __future__ import unicode_literals
+
+from portage.tests import TestCase
+from portage.tests.resolver.ResolverPlayground import ResolverPlayground
+from portage.util.futures import asyncio
+from portage.util.futures.compat_coroutine import coroutine
+
+
+class AuxdbTestCase(TestCase):
+
+   def test_flat_hash_md5(self):
+   self._test_mod('portage.cache.flat_hash.md5_database')
+
+   def test_volatile(self):
+   self._test_mod('portage.cache.volatile.database')
+
+   def test_sqite(self):
+   try:
+   import sqlite3
+   except ImportError:
+   self.skipTest('sqlite3 import failed')
+   self._test_mod('portage.cache.sqlite.database')
+
+   def _test_mod(self, auxdbmodule):
+   ebuilds = {
+   "cat/A-1": {
+   "EAPI": "7"
+   },
+   "cat/B-1": {
+   "EAPI": "7"
+   },
+   }
+
+   playground = ResolverPlayground(ebuilds=ebuilds,
+   user_config={'modules': ('portdbapi.auxdbmodule = %s' % 
auxdbmodule,)})
+
+   portdb = playground.trees[playground.eroot]["porttree"].dbapi
+
+   loop = asyncio._wrap_loop()
+   loop.run_until_complete(self._test_mod_async(ebuilds, portdb))
+
+   @coroutine
+   def _test_mod_async(self, ebuilds, portdb):
+
+   for cpv, metadata in ebuilds.items():
+   eapi, = yield portdb.async_aux_get(cpv, ['EAPI'])
+   self.assertEqual(eapi, metadata['EAPI'])

diff --git a/lib/portage/tests/resolver/ResolverPlayground.py 
b/lib/portage/tests/resolver/ResolverPlayground.py
index cc3056ab4..d7fbe4390 100644
--- a/lib/portage/tests/resolver/ResolverPlayground.py
+++ b/lib/portage/tests/resolver/ResolverPlayground.py
@@ -44,7 +44,7 @@ class ResolverPlayground(object):
its work.
"""
 
-   config_files = frozenset(("eapi", "layout.conf", "make.conf", 
"package.accept_keywords",
+   config_files = frozenset(("eapi", "layout.conf", "make.conf", 
"modules", "package.accept_keywords",
"package.keywords", "package.license", "package.mask", 
"package.properties",
"package.provided", "packages",
"package.unmask", "package.use", "package.use.aliases", 
"package.use.stable.mask",