summaryrefslogtreecommitdiffstats
path: root/pym/portage/tests/ebuild/test_config.py
blob: 6b655daf0fc2f66d7ce8ece4e286eab45e981996 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# Copyright 2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

import copy

import portage
from portage import os
from portage.dep import ExtendedAtomDict
from portage.package.ebuild.config import config
from portage.package.ebuild._config.LicenseManager import LicenseManager
from portage.tests import TestCase
from portage.tests.resolver.ResolverPlayground import ResolverPlayground

class ConfigTestCase(TestCase):

	def testFeaturesMutation(self):
		"""
		Test whether mutation of config.features updates the FEATURES
		variable and persists through config.regenerate() calls.
		"""
		playground = ResolverPlayground()
		try:
			settings = config(clone=playground.settings)

			settings.features.add('noclean')
			self.assertEqual('noclean' in settings['FEATURES'].split(), True)
			settings.regenerate()
			self.assertEqual('noclean' in settings['FEATURES'].split(),True)

			settings.features.discard('noclean')
			self.assertEqual('noclean' in settings['FEATURES'].split(), False)
			settings.regenerate()
			self.assertEqual('noclean' in settings['FEATURES'].split(), False)

			settings.features.add('noclean')
			self.assertEqual('noclean' in settings['FEATURES'].split(), True)
			settings.regenerate()
			self.assertEqual('noclean' in settings['FEATURES'].split(),True)
		finally:
			playground.cleanup()

	def testLicenseManager(self):

		user_config = {
			"package.license":
				(
					"dev-libs/* TEST",
					"dev-libs/A -TEST2", 
					"=dev-libs/A-2 TEST3 @TEST",
					"*/* @EULA TEST2",
					"=dev-libs/C-1 *",
					"=dev-libs/C-2 -*",
				),
		}

		playground = ResolverPlayground(user_config=user_config)
		try:
			portage.util.noiselimit = -2

			license_group_locations = (os.path.join(playground.portdir, "profiles"),)
			pkg_license = os.path.join(playground.eroot, "etc", "portage")

			lic_man = LicenseManager()

			lic_man.parse_license_groups(license_group_locations)
			lic_man.read_config_files(pkg_license)
			lic_man_backup = copy.deepcopy(lic_man)

			self.assertEqual(lic_man._accept_license_str, None)
			self.assertEqual(lic_man._accept_license_str, lic_man_backup._accept_license_str)
			self.assertEqual(lic_man._accept_license, None)
			self.assertEqual(lic_man._accept_license, lic_man_backup._accept_license)
			self.assertEqual(lic_man._license_groups, {"EULA": ["TEST"]})
			self.assertEqual(lic_man._license_groups, lic_man_backup._license_groups)
			self.assertEqual(lic_man._plicensedict, lic_man_backup._plicensedict)
			self.assertEqual(lic_man._undef_lic_groups, set(["TEST"]))
			self.assertEqual(lic_man._undef_lic_groups, lic_man_backup._undef_lic_groups)

			self.assertEqual(lic_man.extract_global_changes(), "TEST TEST2")
			self.assertEqual(lic_man.extract_global_changes(), "")
			self.assertEqual(lic_man_backup.extract_global_changes("TEST3 TEST4"), "TEST3 TEST4 TEST TEST2")
			self.assertEqual(lic_man_backup.extract_global_changes("TEST3 TEST4"), "TEST3 TEST4")

			lic_man.set_accept_license_str("TEST TEST2")
			self.assertEqual(lic_man._getPkgAcceptLicense("dev-libs/B-1", "0"), ["TEST", "TEST2", "TEST"])
			self.assertEqual(lic_man._getPkgAcceptLicense("dev-libs/A-1", "0"), ["TEST", "TEST2", "TEST", "-TEST2"])
			self.assertEqual(lic_man._getPkgAcceptLicense("dev-libs/A-2", "0"), ["TEST", "TEST2", "TEST", "-TEST2", "TEST3", "@TEST"])

			self.assertEqual(lic_man.get_prunned_accept_license("dev-libs/B-1", [], "TEST", "0"), "TEST")
			self.assertEqual(lic_man.get_prunned_accept_license("dev-libs/A-1", [], "-TEST2", "0"), "")
			self.assertEqual(lic_man.get_prunned_accept_license("dev-libs/A-2", [], "|| ( TEST TEST2 )", "0"), "TEST")
			self.assertEqual(lic_man.get_prunned_accept_license("dev-libs/C-1", [], "TEST5", "0"), "TEST5")
			self.assertEqual(lic_man.get_prunned_accept_license("dev-libs/C-2", [], "TEST2", "0"), "")

			self.assertEqual(lic_man.getMissingLicenses("dev-libs/B-1", [], "TEST", "0"), [])
			self.assertEqual(lic_man.getMissingLicenses("dev-libs/A-1", [], "-TEST2", "0"), ["-TEST2"])
			self.assertEqual(lic_man.getMissingLicenses("dev-libs/A-2", [], "|| ( TEST TEST2 )", "0"), [])
			self.assertEqual(lic_man.getMissingLicenses("dev-libs/A-3", [], "|| ( TEST2 || ( TEST3 TEST4 ) )", "0"), ["TEST2", "TEST3", "TEST4"])
			self.assertEqual(lic_man.getMissingLicenses("dev-libs/C-1", [], "TEST5", "0"), [])
			self.assertEqual(lic_man.getMissingLicenses("dev-libs/C-2", [], "TEST2", "0"), ["TEST2"])
			self.assertEqual(lic_man.getMissingLicenses("dev-libs/D-1", [], "", "0"), [])
		finally:
			portage.util.noiselimit = 0
			playground.cleanup()