aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/portage/tests/dep/test_libc.py')
-rw-r--r--lib/portage/tests/dep/test_libc.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/lib/portage/tests/dep/test_libc.py b/lib/portage/tests/dep/test_libc.py
new file mode 100644
index 000000000..6ea96d720
--- /dev/null
+++ b/lib/portage/tests/dep/test_libc.py
@@ -0,0 +1,81 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+from portage.dep import Atom
+from portage.dep.libc import strip_libc_deps
+from portage.tests import TestCase
+
+
+class LibcUtilStripDeps(TestCase):
+ def testStripSimpleDeps(self):
+ """
+ Test that we strip a basic libc dependency out and return
+ a list of dependencies without it in there.
+ """
+
+ libc_dep = [Atom("=sys-libs/glibc-2.38")]
+
+ original_deps = (
+ [
+ Atom("=sys-libs/glibc-2.38"),
+ Atom("=app-misc/foo-1.2.3"),
+ ],
+ [
+ Atom("=sys-libs/glibc-2.38"),
+ ],
+ [
+ Atom("=app-misc/foo-1.2.3"),
+ Atom("=app-misc/bar-1.2.3"),
+ ],
+ )
+
+ for deplist in original_deps:
+ strip_libc_deps(deplist, libc_dep)
+
+ self.assertFalse(
+ all(libc in deplist for libc in libc_dep),
+ "Stripped deplist contains a libc candidate",
+ )
+
+ def testStripComplexRealizedDeps(self):
+ """
+ Test that we strip pathological libc dependencies out and return
+ a list of dependencies without it in there.
+ """
+
+ # This shouldn't really happen for a 'realized' dependency, but
+ # we shouldn't crash if it happens anyway.
+ libc_dep = [Atom("=sys-libs/glibc-2.38*[p]")]
+
+ original_deps = (
+ [
+ Atom("=sys-libs/glibc-2.38[x]"),
+ Atom("=app-misc/foo-1.2.3"),
+ ],
+ [
+ Atom("=sys-libs/glibc-2.38[p]"),
+ ],
+ [
+ Atom("=app-misc/foo-1.2.3"),
+ Atom("=app-misc/bar-1.2.3"),
+ ],
+ )
+
+ for deplist in original_deps:
+ strip_libc_deps(deplist, libc_dep)
+
+ self.assertFalse(
+ all(libc in deplist for libc in libc_dep),
+ "Stripped deplist contains a libc candidate",
+ )
+
+ def testStripNonRealizedDeps(self):
+ """
+ Check that we strip non-realized libc deps.
+ """
+
+ libc_dep = [Atom("sys-libs/glibc:2.2=")]
+ original_deps = [Atom(">=sys-libs/glibc-2.38-r7")]
+
+ strip_libc_deps(original_deps, libc_dep)
+ self.assertFalse(original_deps, "(g)libc dep was not stripped")