--- /dev/null
+# 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()