blob: d59ea58816c329888aa6ec55828e8e08ed485e4d [file] [log] [blame]
# Copyright 2011 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 KeywordsTestCase(TestCase):
def testStableConfig(self):
# Only accept stable keywords for a particular ARCH.
user_config = {
'package.accept_keywords':
(
'*/* -* x86',
),
}
ebuilds = {
'app-misc/A-1': {'KEYWORDS': 'x86'},
'app-misc/B-1': {'KEYWORDS': '~x86'},
'app-misc/C-1': {'KEYWORDS': '*'},
'app-misc/D-1': {'KEYWORDS': '~*'},
'app-misc/E-1': {'KEYWORDS': 'arm'},
'app-misc/F-1': {'KEYWORDS': '~arm'},
'app-misc/G-1': {'KEYWORDS': ''},
}
test_cases = (
ResolverPlaygroundTestCase(
['app-misc/A'],
success = True,
mergelist = ['app-misc/A-1']),
ResolverPlaygroundTestCase(
['app-misc/B'],
success = False,
unstable_keywords = ('app-misc/B-1',),
mergelist = ['app-misc/B-1']),
ResolverPlaygroundTestCase(
['app-misc/C'],
success = True,
mergelist = ['app-misc/C-1']),
ResolverPlaygroundTestCase(
['app-misc/D'],
success = False,
unstable_keywords = ('app-misc/D-1',),
mergelist = ['app-misc/D-1']),
ResolverPlaygroundTestCase(
['app-misc/E'],
success = False,
unstable_keywords = ('app-misc/E-1',),
mergelist = ['app-misc/E-1']),
ResolverPlaygroundTestCase(
['app-misc/F'],
success = False,
unstable_keywords = ('app-misc/F-1',),
mergelist = ['app-misc/F-1']),
ResolverPlaygroundTestCase(
['app-misc/G'],
success = False,
unstable_keywords = ('app-misc/G-1',),
mergelist = ['app-misc/G-1']),
)
playground = ResolverPlayground(ebuilds=ebuilds,
user_config=user_config)
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()
def testAnyStableConfig(self):
# Accept stable keywords for any ARCH.
user_config = {
'package.accept_keywords':
(
'*/* -* *',
),
}
ebuilds = {
'app-misc/A-1': {'KEYWORDS': 'x86'},
'app-misc/B-1': {'KEYWORDS': '~x86'},
'app-misc/C-1': {'KEYWORDS': '*'},
'app-misc/D-1': {'KEYWORDS': '~*'},
'app-misc/E-1': {'KEYWORDS': 'arm'},
'app-misc/F-1': {'KEYWORDS': '~arm'},
'app-misc/G-1': {'KEYWORDS': ''},
}
test_cases = (
ResolverPlaygroundTestCase(
['app-misc/A'],
success = True,
mergelist = ['app-misc/A-1']),
ResolverPlaygroundTestCase(
['app-misc/B'],
success = False,
unstable_keywords = ('app-misc/B-1',),
mergelist = ['app-misc/B-1']),
ResolverPlaygroundTestCase(
['app-misc/C'],
success = True,
mergelist = ['app-misc/C-1']),
ResolverPlaygroundTestCase(
['app-misc/D'],
success = False,
unstable_keywords = ('app-misc/D-1',),
mergelist = ['app-misc/D-1']),
ResolverPlaygroundTestCase(
['app-misc/E'],
success = True,
mergelist = ['app-misc/E-1']),
ResolverPlaygroundTestCase(
['app-misc/F'],
success = False,
unstable_keywords = ('app-misc/F-1',),
mergelist = ['app-misc/F-1']),
ResolverPlaygroundTestCase(
['app-misc/G'],
success = False,
unstable_keywords = ('app-misc/G-1',),
mergelist = ['app-misc/G-1']),
)
playground = ResolverPlayground(ebuilds=ebuilds,
user_config=user_config)
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()
def testUnstableConfig(self):
# Accept stable and unstable keywords for a particular ARCH.
user_config = {
'package.accept_keywords':
(
'*/* -* x86 ~x86',
),
}
ebuilds = {
'app-misc/A-1': {'KEYWORDS': 'x86'},
'app-misc/B-1': {'KEYWORDS': '~x86'},
'app-misc/C-1': {'KEYWORDS': '*'},
'app-misc/D-1': {'KEYWORDS': '~*'},
'app-misc/E-1': {'KEYWORDS': 'arm'},
'app-misc/F-1': {'KEYWORDS': '~arm'},
'app-misc/G-1': {'KEYWORDS': ''},
}
test_cases = (
ResolverPlaygroundTestCase(
['app-misc/A'],
success = True,
mergelist = ['app-misc/A-1']),
ResolverPlaygroundTestCase(
['app-misc/B'],
success = True,
mergelist = ['app-misc/B-1']),
ResolverPlaygroundTestCase(
['app-misc/C'],
success = True,
mergelist = ['app-misc/C-1']),
ResolverPlaygroundTestCase(
['app-misc/D'],
success = True,
mergelist = ['app-misc/D-1']),
ResolverPlaygroundTestCase(
['app-misc/E'],
success = False,
unstable_keywords = ('app-misc/E-1',),
mergelist = ['app-misc/E-1']),
ResolverPlaygroundTestCase(
['app-misc/F'],
success = False,
unstable_keywords = ('app-misc/F-1',),
mergelist = ['app-misc/F-1']),
ResolverPlaygroundTestCase(
['app-misc/G'],
success = False,
unstable_keywords = ('app-misc/G-1',),
mergelist = ['app-misc/G-1']),
)
playground = ResolverPlayground(ebuilds=ebuilds,
user_config=user_config)
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()
def testAnyUnstableConfig(self):
# Accept unstable keywords for any ARCH.
user_config = {
'package.accept_keywords':
(
'*/* -* * ~*',
),
}
ebuilds = {
'app-misc/A-1': {'KEYWORDS': 'x86'},
'app-misc/B-1': {'KEYWORDS': '~x86'},
'app-misc/C-1': {'KEYWORDS': '*'},
'app-misc/D-1': {'KEYWORDS': '~*'},
'app-misc/E-1': {'KEYWORDS': 'arm'},
'app-misc/F-1': {'KEYWORDS': '~arm'},
'app-misc/G-1': {'KEYWORDS': ''},
}
test_cases = (
ResolverPlaygroundTestCase(
['app-misc/A'],
success = True,
mergelist = ['app-misc/A-1']),
ResolverPlaygroundTestCase(
['app-misc/B'],
success = True,
mergelist = ['app-misc/B-1']),
ResolverPlaygroundTestCase(
['app-misc/C'],
success = True,
mergelist = ['app-misc/C-1']),
ResolverPlaygroundTestCase(
['app-misc/D'],
success = True,
mergelist = ['app-misc/D-1']),
ResolverPlaygroundTestCase(
['app-misc/E'],
success = True,
mergelist = ['app-misc/E-1']),
ResolverPlaygroundTestCase(
['app-misc/F'],
success = True,
mergelist = ['app-misc/F-1']),
ResolverPlaygroundTestCase(
['app-misc/G'],
success = False,
unstable_keywords = ('app-misc/G-1',),
mergelist = ['app-misc/G-1']),
)
playground = ResolverPlayground(ebuilds=ebuilds,
user_config=user_config)
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()
def testIgnoreKeywordsConfig(self):
# Ignore keywords entirely (accept **)
user_config = {
'package.accept_keywords':
(
'*/* -* **',
),
}
ebuilds = {
'app-misc/A-1': {'KEYWORDS': 'x86'},
'app-misc/B-1': {'KEYWORDS': '~x86'},
'app-misc/C-1': {'KEYWORDS': '*'},
'app-misc/D-1': {'KEYWORDS': '~*'},
'app-misc/E-1': {'KEYWORDS': 'arm'},
'app-misc/F-1': {'KEYWORDS': '~arm'},
'app-misc/G-1': {'KEYWORDS': ''},
}
test_cases = (
ResolverPlaygroundTestCase(
['app-misc/A'],
success = True,
mergelist = ['app-misc/A-1']),
ResolverPlaygroundTestCase(
['app-misc/B'],
success = True,
mergelist = ['app-misc/B-1']),
ResolverPlaygroundTestCase(
['app-misc/C'],
success = True,
mergelist = ['app-misc/C-1']),
ResolverPlaygroundTestCase(
['app-misc/D'],
success = True,
mergelist = ['app-misc/D-1']),
ResolverPlaygroundTestCase(
['app-misc/E'],
success = True,
mergelist = ['app-misc/E-1']),
ResolverPlaygroundTestCase(
['app-misc/F'],
success = True,
mergelist = ['app-misc/F-1']),
ResolverPlaygroundTestCase(
['app-misc/G'],
success = True,
mergelist = ['app-misc/G-1']),
)
playground = ResolverPlayground(ebuilds=ebuilds,
user_config=user_config)
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()