| # 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() |