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()
