# Copyright 2010 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 MergelistOutputTestCase(TestCase): def testMergelistOutput(self): """ This test doesn't check if the output is correct, but makes sure that we don't backtrace somewhere in the output code. """ ebuilds = { "dev-libs/A-1": { "DEPEND": "dev-libs/B dev-libs/C", "IUSE": "+foo", "EAPI": 1 }, "dev-libs/B-1": { "DEPEND": "dev-libs/D", "IUSE": "foo +bar", "EAPI": 1 }, "dev-libs/C-1": { "DEPEND": "dev-libs/E", "IUSE": "foo bar" }, "dev-libs/D-1": { "IUSE": "" }, "dev-libs/E-1": {}, #reinstall for flags "dev-libs/Z-1": { "IUSE": "+foo", "EAPI": 1 }, "dev-libs/Y-1": { "IUSE": "foo", "EAPI": 1 }, "dev-libs/X-1": {}, "dev-libs/W-1": { "IUSE": "+foo", "EAPI": 1 }, } installed = { "dev-libs/Z-1": { "USE": "", "IUSE": "foo" }, "dev-libs/Y-1": { "USE": "foo", "IUSE": "+foo", "EAPI": 1 }, "dev-libs/X-1": { "USE": "foo", "IUSE": "+foo", "EAPI": 1 }, "dev-libs/W-1": { }, } option_cobos = ( (), ("verbose",), ("tree",), ("tree", "unordered-display",), ("verbose",), ("verbose", "tree",), ("verbose", "tree", "unordered-display",), ) test_cases = [] for options in option_cobos: testcase_opts = {} for opt in options: testcase_opts["--" + opt] = True test_cases.append(ResolverPlaygroundTestCase( ["dev-libs/A"], options = testcase_opts, success = True, ignore_mergelist_order=True, mergelist = ["dev-libs/D-1", "dev-libs/E-1", "dev-libs/C-1", "dev-libs/B-1", "dev-libs/A-1"])) test_cases.append(ResolverPlaygroundTestCase( ["dev-libs/Z"], options = testcase_opts, success = True, mergelist = ["dev-libs/Z-1"])) test_cases.append(ResolverPlaygroundTestCase( ["dev-libs/Y"], options = testcase_opts, success = True, mergelist = ["dev-libs/Y-1"])) test_cases.append(ResolverPlaygroundTestCase( ["dev-libs/X"], options = testcase_opts, success = True, mergelist = ["dev-libs/X-1"])) test_cases.append(ResolverPlaygroundTestCase( ["dev-libs/W"], options = testcase_opts, success = True, mergelist = ["dev-libs/W-1"])) 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.cleanup()