Add tests for KEYWORDS masking.
authorZac Medico <zmedico@gentoo.org>
Sun, 2 Oct 2011 02:13:20 +0000 (19:13 -0700)
committerZac Medico <zmedico@gentoo.org>
Sun, 2 Oct 2011 02:13:20 +0000 (19:13 -0700)
pym/portage/tests/resolver/ResolverPlayground.py
pym/portage/tests/resolver/test_keywords.py [new file with mode: 0644]

index 9630008b2c55c1ad1171839f0659e87c9c248694..ec6f63166c3032bc8596e069c370750b96d28a91 100644 (file)
@@ -37,7 +37,7 @@ class ResolverPlayground(object):
        its work.
        """
 
-       config_files = frozenset(("package.use", "package.mask", "package.keywords", \
+       config_files = frozenset(("package.accept_keywords", "package.use", "package.mask", "package.keywords", \
                "package.unmask", "package.properties", "package.license", "use.mask", "use.force",
                "layout.conf",))
 
diff --git a/pym/portage/tests/resolver/test_keywords.py b/pym/portage/tests/resolver/test_keywords.py
new file mode 100644 (file)
index 0000000..d59ea58
--- /dev/null
@@ -0,0 +1,356 @@
+# 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()