# Copyright 2012 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 DepcleanUnavailableSlotTestCase(TestCase): def testDepcleanUnavailableSlot(self): """ Test bug #445506, where we want to remove the slot for which the ebuild is no longer available, even though its version is higher. """ ebuilds = { "sys-kernel/gentoo-sources-3.0.53": {"SLOT": "3.0.53", "KEYWORDS": "x86"}, } installed = { "sys-kernel/gentoo-sources-3.0.53": {"SLOT": "3.0.53", "KEYWORDS": "x86"}, "sys-kernel/gentoo-sources-3.2.21": {"SLOT": "3.2.21", "KEYWORDS": "x86"}, } world = ["sys-kernel/gentoo-sources"] test_cases = ( ResolverPlaygroundTestCase( [], options={"--depclean": True}, success=True, cleanlist=["sys-kernel/gentoo-sources-3.2.21"], ), ) 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() # Now make the newer version available and verify that # the lower version is depcleaned. ebuilds.update( { "sys-kernel/gentoo-sources-3.2.21": { "SLOT": "3.2.21", "KEYWORDS": "x86", }, } ) test_cases = ( ResolverPlaygroundTestCase( [], options={"--depclean": True}, success=True, cleanlist=["sys-kernel/gentoo-sources-3.0.53"], ), ) 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()