# 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 RuntimeCycleMergeOrderTestCase(TestCase): def testRuntimeCycleMergeOrder(self): ebuilds = { 'app-misc/plugins-consumer-1' : { 'EAPI': '6', 'DEPEND' : 'app-misc/plugin-b:=', 'RDEPEND' : 'app-misc/plugin-b:=', }, 'app-misc/plugin-b-1' : { 'EAPI': '6', 'RDEPEND' : 'app-misc/runtime-cycle-b', 'PDEPEND': 'app-misc/plugins-consumer', }, 'app-misc/runtime-cycle-b-1' : { 'RDEPEND' : 'app-misc/plugin-b app-misc/branch-b', }, 'app-misc/branch-b-1' : { 'RDEPEND' : 'app-misc/leaf-b app-misc/branch-c', }, 'app-misc/leaf-b-1' : {}, 'app-misc/branch-c-1' : { 'RDEPEND' : 'app-misc/runtime-cycle-c app-misc/runtime-c', }, 'app-misc/runtime-cycle-c-1' : { 'RDEPEND' : 'app-misc/branch-c', }, 'app-misc/runtime-c-1' : { 'RDEPEND' : 'app-misc/branch-d', }, 'app-misc/branch-d-1' : { 'RDEPEND' : 'app-misc/leaf-d app-misc/branch-e', }, 'app-misc/branch-e-1' : { 'RDEPEND' : 'app-misc/leaf-e', }, 'app-misc/leaf-d-1' : {}, 'app-misc/leaf-e-1' : {}, } test_cases = ( ResolverPlaygroundTestCase( ['app-misc/plugin-b'], success = True, ambiguous_merge_order = True, mergelist = [ ('app-misc/leaf-b-1', 'app-misc/leaf-d-1', 'app-misc/leaf-e-1'), ('app-misc/branch-d-1', 'app-misc/branch-e-1'), 'app-misc/runtime-c-1', ('app-misc/runtime-cycle-c-1', 'app-misc/branch-c-1'), 'app-misc/branch-b-1', ('app-misc/runtime-cycle-b-1', 'app-misc/plugin-b-1'), 'app-misc/plugins-consumer-1', ], ), ) playground = ResolverPlayground(ebuilds=ebuilds) 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()