commit:     521c3884a59d301a6b7eea4d4a50de432304cf70
Author:     Alfred Wingate <parona <AT> protonmail <DOT> com>
AuthorDate: Sat Feb 21 03:19:46 2026 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat Feb 21 11:25:38 2026 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=521c3884

Add test for bug 969654

Bug: https://bugs.gentoo.org/969654
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/tests/resolver/test_backtracking.py | 76 ++++++++++++++++++++++++-
 1 file changed, 75 insertions(+), 1 deletion(-)

diff --git a/lib/portage/tests/resolver/test_backtracking.py 
b/lib/portage/tests/resolver/test_backtracking.py
index 7a996a7316..b543fbd88b 100644
--- a/lib/portage/tests/resolver/test_backtracking.py
+++ b/lib/portage/tests/resolver/test_backtracking.py
@@ -1,4 +1,4 @@
-# Copyright 2010-2015 Gentoo Foundation
+# Copyright 2010-2026 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 from portage.tests import TestCase
@@ -191,3 +191,77 @@ class BacktrackingTestCase(TestCase):
                 self.assertEqual(test_case.test_success, True, 
test_case.fail_msg)
         finally:
             playground.cleanup()
+
+    def testBacktrackInconsistentForcedRebuildWithBlocker(self):
+
+        ebuilds = {
+            "dev-libs/boost-1.88.0": {"EAPI": 8, "SLOT": "0/1.88"},
+            "dev-libs/boost-1.89.0": {"EAPI": 8, "SLOT": "0/1.89"},
+            "x11-libs/qwt-6.3.0": {"EAPI": 8},
+            "x11-libs/qwt-6.2.0": {"EAPI": 8, "IUSE": "+qt5"},
+            "net-wireless/gnuradio-3.10.12": {
+                "EAPI": 8,
+                "SLOT": "0/3.10.12.0",
+                "RDEPEND": "x11-libs/qwt[qt5(-)]",
+            },
+            "net-wireless/gr-iqbal-0.38.3": {
+                "EAPI": 8,
+                "RDEPEND": "net-wireless/gnuradio:= dev-libs/boost:=",
+            },
+            "dev-libs/A-1": {"EAPI": 8, "RDEPEND": "dev-libs/boost:="},
+            "dev-libs/B-1": {"EAPI": 8, "RDEPEND": "dev-libs/boost:="},
+            "dev-libs/C-1": {"EAPI": 8, "RDEPEND": "dev-libs/boost:="},
+            "dev-libs/D-1": {"EAPI": 8, "RDEPEND": "dev-libs/boost:="},
+        }
+
+        installed = {
+            "dev-libs/boost-1.89.0": {"EAPI": 8, "SLOT": "0/1.89"},
+            "x11-libs/qwt-6.2.0": {"EAPI": 8, "IUSE": "+qt5", "USE": "qt5"},
+            "net-wireless/gnuradio-3.10.12": {
+                "EAPI": 8,
+                "SLOT": "0/3.10.12.0",
+                "RDEPEND": "x11-libs/qwt[qt5(-)]",
+            },
+            "net-wireless/gr-iqbal-0.38.3": {
+                "EAPI": 8,
+                "RDEPEND": "net-wireless/gnuradio:0/3.10.12.0= 
dev-libs/boost:0/1.88=",
+            },
+            "dev-libs/A-1": {"EAPI": 8, "RDEPEND": "dev-libs/boost:0/1.89="},
+            "dev-libs/B-1": {"EAPI": 8, "RDEPEND": "dev-libs/boost:0/1.89="},
+            "dev-libs/C-1": {"EAPI": 8, "RDEPEND": "dev-libs/boost:0/1.89="},
+            "dev-libs/D-1": {"EAPI": 8, "RDEPEND": "dev-libs/boost:0/1.89="},
+        }
+
+        world = [
+            "net-wireless/gr-iqbal",
+            "dev-libs/A",
+            "dev-libs/B",
+            "dev-libs/C",
+            "dev-libs/D",
+        ]
+
+        options = {
+            "--update": True,
+            "--deep": True,
+            "--reinstall": "changed-use",
+        }
+
+        test_cases = (
+            ResolverPlaygroundTestCase(
+                ["@world"],
+                options=options,
+                mergelist=["net-wireless/gr-iqbal-0.38.3"],
+                success=True,
+            ),
+        )
+
+        playground = ResolverPlayground(
+            ebuilds=ebuilds, installed=installed, world=world, debug=False
+        )
+
+        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