commit: f5a58b3f2e2adc7f9d2794d4e91d44ec1419b56a Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Tue Feb 23 22:14:30 2021 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Tue Feb 23 22:37:34 2021 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=f5a58b3f
Add USE conflict unit test for bug 615824 Test bug 615824, where an automask USE change results in a conflict which is not reported. In order to install L, foo must be disabled for both K and M, but autounmask disables foo for K and leaves it enabled for M: [ebuild N ] sci-libs/K-1 USE="-foo" [ebuild N ] sci-libs/L-1 [ebuild N ] sci-libs/M-1 USE="foo" The following USE changes are necessary to proceed: (see "package.use" in the portage(5) man page for more details) # required by sci-libs/L-1::test_repo # required by sci-libs/L (argument) >=sci-libs/K-1 -foo Bug: https://bugs.gentoo.org/615824 Signed-off-by: Zac Medico <zmedico <AT> gentoo.org> .../resolver/test_autounmask_use_slot_conflict.py | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/lib/portage/tests/resolver/test_autounmask_use_slot_conflict.py b/lib/portage/tests/resolver/test_autounmask_use_slot_conflict.py new file mode 100644 index 000000000..2e090d45e --- /dev/null +++ b/lib/portage/tests/resolver/test_autounmask_use_slot_conflict.py @@ -0,0 +1,51 @@ +# Copyright 2017-2021 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 AutounmaskUseSlotConflictTestCase(TestCase): + def testAutounmaskUseSlotConflict(self): + self.todo = True + + ebuilds = { + "sci-libs/K-1": {"IUSE": "+foo", "EAPI": 1}, + "sci-libs/L-1": {"DEPEND": "sci-libs/K[-foo]", "EAPI": 2}, + "sci-libs/M-1": {"DEPEND": "sci-libs/K[foo=]", "IUSE": "+foo", "EAPI": 2}, + } + + installed = {} + + test_cases = ( + # Test bug 615824, where an automask USE change results in + # a conflict which is not reported. In order to install L, + # foo must be disabled for both K and M, but autounmask + # disables foo for K and leaves it enabled for M. + ResolverPlaygroundTestCase( + ["sci-libs/L", "sci-libs/M"], + options={"--backtrack": 0}, + success=False, + mergelist=[ + "sci-libs/L-1", + "sci-libs/M-1", + "sci-libs/K-1", + ], + ignore_mergelist_order=True, + slot_collision_solutions=[ + {"sci-libs/K-1": {"foo": False}, "sci-libs/M-1": {"foo": False}} + ], + ), + ) + + playground = ResolverPlayground(ebuilds=ebuilds, installed=installed) + 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.debug = False + playground.cleanup()
