diff options
author | Brian Harring <ferringb@gmail.com> | 2024-01-15 20:50:04 -0800 |
---|---|---|
committer | Brian Harring <ferringb@gmail.com> | 2024-01-23 00:52:08 -0800 |
commit | 6c1e1f997b0a99954f0eadd7898a368076fb0ea5 (patch) | |
tree | f26581b0365c62ee96d5c4ab76ccba0c1b99f49a /tests | |
parent | refactor: Add missing abstractmethods for ConfiguredTree. (diff) | |
download | pkgcore-6c1e1f997b0a99954f0eadd7898a368076fb0ea5.tar.gz pkgcore-6c1e1f997b0a99954f0eadd7898a368076fb0ea5.tar.bz2 pkgcore-6c1e1f997b0a99954f0eadd7898a368076fb0ea5.zip |
fix filtered.tree.{categories,packages,versions} .
The implementation wasn't properly aliasing _get_* to
the underlying raw_repo, and it should've been filtering
packages and versions according to the filter. This adds that.
This isn't a huge issue, but it breaks API guarantees
for code tring to efficienctly access this sort of info
for a repository stack.
Signed-off-by: Brian Harring <ferringb@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/repository/test_filtered.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/repository/test_filtered.py b/tests/repository/test_filtered.py index 312e2528..7a04c21b 100644 --- a/tests/repository/test_filtered.py +++ b/tests/repository/test_filtered.py @@ -1,4 +1,5 @@ from pkgcore.ebuild.atom import atom +from pkgcore.ebuild.restricts import CategoryDep from pkgcore.ebuild.cpv import VersionedCPV from pkgcore.repository import filtered from pkgcore.repository.util import SimpleTree @@ -57,3 +58,24 @@ class TestVisibility: ) ) assert sorted(vrepo) == sorted(repo.itermatch(atom("dev-util/bsdiff"))) + + def test_categories_api(self): + # filter to just dev-util/diffball; this confirms that empty categories are filter, + # and that filtering of a package (leaving one in a category still) doesn't filter the category. + _, vrepo = self.setup_repos( + packages.OrRestriction(CategoryDep("dev-lib"), atom("dev-util/bsdiff")) + ) + assert sorted(vrepo.categories) == sorted( + [ + "dev-lib", + "dev-util", + ] + ), "category filtering must not filter dev-lib even if there are no packages left post filtering" + + def test_packages_api(self): + _, vrepo = self.setup_repos(atom("dev-util/diffball")) + assert sorted(vrepo.packages["dev-util"]) == ["bsdiff"] + + def test_versions_api(self): + _, vrepo = self.setup_repos(atom("=dev-util/diffball-1.0")) + assert sorted(vrepo.versions[("dev-util", "diffball")]) == ["0.7"] |