depgraph: fix bug #350254 and test it
authorZac Medico <zmedico@gentoo.org>
Mon, 3 Jan 2011 08:55:38 +0000 (00:55 -0800)
committerZac Medico <zmedico@gentoo.org>
Mon, 3 Jan 2011 08:55:38 +0000 (00:55 -0800)
pym/_emerge/depgraph.py
pym/portage/tests/resolver/test_multirepo.py

index f62af31b8d4ba24d577ad35d6c3fe2a82f5c417a..a167b452fcd20b99e4eca276a7b7859ca68c62e8 100644 (file)
@@ -2871,7 +2871,8 @@ class depgraph(object):
                                                        modified_use=self._pkg_use_enabled(pkg)):
                                                continue
 
-                                       if dont_miss_updates:
+                                       if packages_with_invalid_use_config and \
+                                               (not pkg.installed or dont_miss_updates):
                                                # Check if a higher version was rejected due to user
                                                # USE configuration. The packages_with_invalid_use_config
                                                # list only contains unbuilt ebuilds since USE can't
index e6475762dba33d8f2e9c257cae01c4454e149284..23f8f020073133ee177daa5fc70aa73ee31acead 100644 (file)
@@ -28,6 +28,9 @@ class MultirepoTestCase(TestCase):
 
                        "dev-libs/F-1::repo1": { "SLOT": "1" },
                        "dev-libs/F-1::repo2": { "SLOT": "1" },
+
+                       "dev-libs/G-1::repo1": { "EAPI" : "4", "IUSE":"+x +y", "REQUIRED_USE" : "" },
+                       "dev-libs/G-1::repo2": { "EAPI" : "4", "IUSE":"+x +y", "REQUIRED_USE" : "^^ ( x y )" },
                        }
                
                sets = {
@@ -113,6 +116,14 @@ class MultirepoTestCase(TestCase):
                                success = True,
                                check_repo_names = True,
                                mergelist = ["dev-libs/F-1::repo1"]),
+
+                       # Check interaction between repo priority and unsatsisfied
+                       # REQUIRED_USE, for bug #350254.
+                       ResolverPlaygroundTestCase(
+                               ["=dev-libs/G-1"],
+                               check_repo_names = True,
+                               success = False),
+
                        )
 
                playground = ResolverPlayground(ebuilds=ebuilds, sets=sets)
@@ -206,9 +217,8 @@ class MultirepoTestCase(TestCase):
                                mergelist = ["dev-libs/A-2::repo1", "dev-libs/B-2"]),
                        ResolverPlaygroundTestCase(
                                ["=dev-libs/B-3"],
-                               success = True,
-                               check_repo_names = True,
-                               mergelist = ["dev-libs/A-1", "dev-libs/B-3"]),
+                               success = False,
+                               check_repo_names = True),
 
                        #package.keywords test
                        ResolverPlaygroundTestCase(