# Copyright 2016 Gentoo Foundation # 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 SlotOperatorReverseDepsTestCase(TestCase): def testSlotOperatorReverseDeps(self): ebuilds = { "media-libs/mesa-11.2.2" : { "EAPI": "6", "SLOT": "0", "RDEPEND": ">=sys-devel/llvm-3.6.0:=" }, "sys-devel/clang-3.7.1-r100" : { "EAPI": "6", "SLOT": "0/3.7", "RDEPEND": "~sys-devel/llvm-3.7.1" }, "sys-devel/clang-3.8.0-r100" : { "EAPI": "6", "SLOT": "0/3.8", "RDEPEND": "~sys-devel/llvm-3.8.0" }, "sys-devel/llvm-3.7.1-r2" : { "EAPI": "6", "SLOT": "0/3.7.1", "PDEPEND": "=sys-devel/clang-3.7.1-r100" }, "sys-devel/llvm-3.8.0-r2" : { "EAPI": "6", "SLOT": "0/3.8.0", "PDEPEND": "=sys-devel/clang-3.8.0-r100" }, } installed = { "media-libs/mesa-11.2.2" : { "EAPI": "6", "SLOT": "0", "RDEPEND": ">=sys-devel/llvm-3.6.0:0/3.7.1=" }, "sys-devel/clang-3.7.1-r100" : { "EAPI": "6", "SLOT": "0/3.7", "RDEPEND": "~sys-devel/llvm-3.7.1" }, "sys-devel/llvm-3.7.1-r2" : { "EAPI": "6", "SLOT": "0/3.7.1", "PDEPEND": "=sys-devel/clang-3.7.1-r100" }, } world = ["media-libs/mesa"] test_cases = ( # Test bug #584626, where an llvm update is missed due to # the check_reverse_dependencies function seeing that # updating llvm will break a dependency of the installed # version of clang (though a clang update is available). ResolverPlaygroundTestCase( ["@world"], options = {"--update": True, "--deep": True}, success = True, mergelist = [ 'sys-devel/llvm-3.8.0-r2', 'sys-devel/clang-3.8.0-r100', 'media-libs/mesa-11.2.2', ], ), ResolverPlaygroundTestCase( ["@world"], options = { "--update": True, "--deep": True, "--ignore-built-slot-operator-deps": "y", }, success = True, mergelist = [ 'sys-devel/llvm-3.8.0-r2', 'sys-devel/clang-3.8.0-r100', ], ), ) 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()