commit:     2af4bc17d1b4ea1581bb191dfa7f34ec64ab140b
Author:     YiFei Zhu <zhuyifei1999 <AT> gmail <DOT> com>
AuthorDate: Mon Jun 12 02:07:39 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Jun 16 03:34:46 2023 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=2af4bc17

tests: resolver: Test the (bad) behavior of bug #622270

Without fixing the bug. This is so we have a baseline behavior to
compare against.

Bug: https://bugs.gentoo.org/439688
Bug: https://bugs.gentoo.org/622270
Signed-off-by: YiFei Zhu <zhuyifei1999 <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../resolver/test_slot_conflict_blocked_prune.py   | 78 ++++++++++++++++++++++
 1 file changed, 78 insertions(+)

diff --git a/lib/portage/tests/resolver/test_slot_conflict_blocked_prune.py 
b/lib/portage/tests/resolver/test_slot_conflict_blocked_prune.py
new file mode 100644
index 000000000..14e98cd00
--- /dev/null
+++ b/lib/portage/tests/resolver/test_slot_conflict_blocked_prune.py
@@ -0,0 +1,78 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+from portage.tests import TestCase
+from portage.tests.resolver.ResolverPlayground import (
+    ResolverPlayground,
+    ResolverPlaygroundTestCase,
+)
+
+
+class SlotConflictBlockedPruneTestCase(TestCase):
+    def testSlotConflictBlockedPrune(self):
+        """
+        Bug 622270
+        Downgrading package (as openssl here) due to un-accepting unstable.
+        Dependent package (as rustup here) cannot be rebuilt due to missing
+        keyword, so dependee downgrade is cancelled, but other dependents
+        (such as xwayland here) are rebuilt nevertheless. This should not
+        happen and the rebuilds should be pruned.
+        """
+        ebuilds = {
+            "x11-base/xwayland-23.1.1": {
+                "EAPI": "5",
+                "RDEPEND": "dev-libs/openssl:=",
+            },
+            "dev-util/rustup-1.25.2": {
+                "EAPI": "5",
+                "RDEPEND": "dev-libs/openssl:0=",
+                "KEYWORDS": "~x86",
+            },
+            "dev-libs/openssl-1.1.1u": {
+                "EAPI": "5",
+                "SLOT": "0/1.1",
+            },
+            "dev-libs/openssl-3.1.1": {
+                "EAPI": "5",
+                "SLOT": "0/3",
+                "KEYWORDS": "~x86",
+            },
+        }
+
+        installed = {
+            "x11-base/xwayland-23.1.1": {
+                "EAPI": "5",
+                "RDEPEND": "dev-libs/openssl:0/3=",
+            },
+            "dev-util/rustup-1.25.2": {
+                "EAPI": "5",
+                "RDEPEND": "dev-libs/openssl:0/3=",
+                "KEYWORDS": "~x86",
+            },
+            "dev-libs/openssl-3.1.1": {
+                "EAPI": "5",
+                "SLOT": "0/3",
+                "KEYWORDS": "~x86",
+            },
+        }
+
+        world = ["x11-base/xwayland", "dev-util/rustup"]
+
+        test_cases = (
+            ResolverPlaygroundTestCase(
+                ["@world"],
+                options={"--deep": True, "--update": True, "--verbose": True},
+                success=True,
+                mergelist=["x11-base/xwayland-23.1.1"],
+            ),
+        )
+
+        playground = ResolverPlayground(
+            ebuilds=ebuilds, installed=installed, world=world
+        )
+        try:
+            for test_case in test_cases:
+                playground.run_TestCase(test_case)
+                self.assertEqual(test_case.test_success, True, 
test_case.fail_msg)
+        finally:
+            playground.cleanup()

Reply via email to