| # Copyright 2017 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 BinaryPkgEbuildVisibilityTestCase(TestCase): |
| |
| def testBinaryPkgEbuildVisibility(self): |
| |
| binpkgs = { |
| "app-misc/foo-3" : {}, |
| "app-misc/foo-2" : {}, |
| "app-misc/foo-1" : {}, |
| } |
| |
| ebuilds = { |
| "app-misc/foo-2" : {}, |
| "app-misc/foo-1" : {}, |
| } |
| |
| installed = { |
| "app-misc/foo-1" : {}, |
| } |
| |
| world = ["app-misc/foo"] |
| |
| test_cases = ( |
| |
| # Test bug #612960, where --use-ebuild-visibility failed |
| # to reject binary packages for which ebuilds were not |
| # available. |
| ResolverPlaygroundTestCase( |
| ["@world"], |
| options = { |
| "--update": True, |
| "--deep": True, |
| "--use-ebuild-visibility": 'y', |
| "--usepkgonly": True, |
| }, |
| success = True, |
| mergelist = [ |
| '[binary]app-misc/foo-2', |
| ], |
| ), |
| |
| ResolverPlaygroundTestCase( |
| ["@world"], |
| options = { |
| "--update": True, |
| "--deep": True, |
| "--usepkgonly": True, |
| }, |
| success = True, |
| mergelist = [ |
| '[binary]app-misc/foo-3', |
| ], |
| ), |
| |
| ResolverPlaygroundTestCase( |
| ["@world"], |
| options = { |
| "--update": True, |
| "--deep": True, |
| "--usepkg": True, |
| }, |
| success = True, |
| mergelist = [ |
| '[binary]app-misc/foo-2', |
| ], |
| ), |
| |
| ResolverPlaygroundTestCase( |
| ["=app-misc/foo-3"], |
| options = { |
| "--use-ebuild-visibility": 'y', |
| "--usepkgonly": True, |
| }, |
| success = False, |
| ), |
| |
| ResolverPlaygroundTestCase( |
| ["app-misc/foo"], |
| options = { |
| "--use-ebuild-visibility": 'y', |
| "--usepkgonly": True, |
| }, |
| success = True, |
| mergelist = [ |
| '[binary]app-misc/foo-2', |
| ], |
| ), |
| |
| ResolverPlaygroundTestCase( |
| ["app-misc/foo"], |
| options = { |
| "--usepkgonly": True, |
| }, |
| success = True, |
| mergelist = [ |
| '[binary]app-misc/foo-3', |
| ], |
| ), |
| |
| # The default behavior is to enforce ebuild visibility as |
| # long as a visible package is available to satisfy the |
| # current atom. In the following test case, ebuild visibility |
| # is ignored in order to satisfy the =app-misc/foo-3 atom. |
| ResolverPlaygroundTestCase( |
| ["=app-misc/foo-3"], |
| options = { |
| "--usepkg": True, |
| }, |
| success = True, |
| mergelist = [ |
| '[binary]app-misc/foo-3', |
| ], |
| ), |
| |
| # Verify that --use-ebuild-visibility works with --usepkg |
| # when no other visible package is available. |
| ResolverPlaygroundTestCase( |
| ["=app-misc/foo-3"], |
| options = { |
| "--use-ebuild-visibility": "y", |
| "--usepkg": True, |
| }, |
| success = False, |
| ), |
| ) |
| |
| playground = ResolverPlayground(binpkgs=binpkgs, ebuilds=ebuilds, |
| installed=installed, world=world) |
| 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() |
| |