1 # Copyright 2010 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
6 from portage.package.ebuild.config import config
7 from portage.package.ebuild._config.LicenseManager import LicenseManager
8 from portage.tests import TestCase
9 from portage.tests.resolver.ResolverPlayground import ResolverPlayground, ResolverPlaygroundTestCase
11 class ConfigTestCase(TestCase):
15 Test the clone via constructor.
22 playground = ResolverPlayground(ebuilds=ebuilds)
24 settings = config(clone=playground.settings)
25 result = playground.run(["=dev-libs/A-1"])
26 pkg, existing_node = result.depgraph._select_package(
27 playground.root, "=dev-libs/A-1")
30 # clone after setcpv tests deepcopy of LazyItemsDict
31 settings2 = config(clone=settings)
35 def testFeaturesMutation(self):
37 Test whether mutation of config.features updates the FEATURES
38 variable and persists through config.regenerate() calls. Also
39 verify that features_set._prune_overrides() works correctly.
41 playground = ResolverPlayground()
43 settings = config(clone=playground.settings)
45 settings.features.add('noclean')
46 self.assertEqual('noclean' in settings['FEATURES'].split(), True)
48 self.assertEqual('noclean' in settings['FEATURES'].split(),True)
50 settings.features.discard('noclean')
51 self.assertEqual('noclean' in settings['FEATURES'].split(), False)
53 self.assertEqual('noclean' in settings['FEATURES'].split(), False)
55 settings.features.add('noclean')
56 self.assertEqual('noclean' in settings['FEATURES'].split(), True)
58 self.assertEqual('noclean' in settings['FEATURES'].split(),True)
60 # before: ['noclean', '-noclean', 'noclean']
61 settings.features._prune_overrides()
63 self.assertEqual(settings._features_overrides.count('noclean'), 1)
64 self.assertEqual(settings._features_overrides.count('-noclean'), 0)
66 settings.features.remove('noclean')
68 # before: ['noclean', '-noclean']
69 settings.features._prune_overrides()
71 self.assertEqual(settings._features_overrides.count('noclean'), 0)
72 self.assertEqual(settings._features_overrides.count('-noclean'), 1)
76 def testLicenseManager(self):
83 "=dev-libs/A-2 TEST3 @TEST",
90 playground = ResolverPlayground(user_config=user_config)
92 portage.util.noiselimit = -2
94 license_group_locations = (os.path.join(playground.portdir, "profiles"),)
95 pkg_license = os.path.join(playground.eroot, "etc", "portage")
97 lic_man = LicenseManager(license_group_locations, pkg_license)
99 self.assertEqual(lic_man._accept_license_str, None)
100 self.assertEqual(lic_man._accept_license, None)
101 self.assertEqual(lic_man._license_groups, {"EULA": frozenset(["TEST"])})
102 self.assertEqual(lic_man._undef_lic_groups, set(["TEST"]))
104 self.assertEqual(lic_man.extract_global_changes(), "TEST TEST2")
105 self.assertEqual(lic_man.extract_global_changes(), "")
107 lic_man.set_accept_license_str("TEST TEST2")
108 self.assertEqual(lic_man._getPkgAcceptLicense("dev-libs/B-1", "0", None), ["TEST", "TEST2", "TEST"])
109 self.assertEqual(lic_man._getPkgAcceptLicense("dev-libs/A-1", "0", None), ["TEST", "TEST2", "TEST", "-TEST2"])
110 self.assertEqual(lic_man._getPkgAcceptLicense("dev-libs/A-2", "0", None), ["TEST", "TEST2", "TEST", "-TEST2", "TEST3", "@TEST"])
112 self.assertEqual(lic_man.get_prunned_accept_license("dev-libs/B-1", [], "TEST", "0", None), "TEST")
113 self.assertEqual(lic_man.get_prunned_accept_license("dev-libs/A-1", [], "-TEST2", "0", None), "")
114 self.assertEqual(lic_man.get_prunned_accept_license("dev-libs/A-2", [], "|| ( TEST TEST2 )", "0", None), "TEST")
115 self.assertEqual(lic_man.get_prunned_accept_license("dev-libs/C-1", [], "TEST5", "0", None), "TEST5")
116 self.assertEqual(lic_man.get_prunned_accept_license("dev-libs/C-2", [], "TEST2", "0", None), "")
118 self.assertEqual(lic_man.getMissingLicenses("dev-libs/B-1", [], "TEST", "0", None), [])
119 self.assertEqual(lic_man.getMissingLicenses("dev-libs/A-1", [], "-TEST2", "0", None), ["-TEST2"])
120 self.assertEqual(lic_man.getMissingLicenses("dev-libs/A-2", [], "|| ( TEST TEST2 )", "0", None), [])
121 self.assertEqual(lic_man.getMissingLicenses("dev-libs/A-3", [], "|| ( TEST2 || ( TEST3 TEST4 ) )", "0", None), ["TEST2", "TEST3", "TEST4"])
122 self.assertEqual(lic_man.getMissingLicenses("dev-libs/C-1", [], "TEST5", "0", None), [])
123 self.assertEqual(lic_man.getMissingLicenses("dev-libs/C-2", [], "TEST2", "0", None), ["TEST2"])
124 self.assertEqual(lic_man.getMissingLicenses("dev-libs/D-1", [], "", "0", None), [])
126 portage.util.noiselimit = 0
129 def testPackageMaskOrder(self):
169 ResolverPlaygroundTestCase(
172 ResolverPlaygroundTestCase(
175 mergelist = ["dev-libs/B-1"]),
176 ResolverPlaygroundTestCase(
179 mergelist = ["dev-libs/C-1"]),
180 ResolverPlaygroundTestCase(
183 mergelist = ["dev-libs/D-1"]),
184 ResolverPlaygroundTestCase(
189 playground = ResolverPlayground(ebuilds=ebuilds, repo_configs=repo_configs, \
190 profile=profile, user_config=user_config)
192 for test_case in test_cases:
193 playground.run_TestCase(test_case)
194 self.assertEqual(test_case.test_success, True, test_case.fail_msg)