test_merge_order: test many-to-one blocks
authorZac Medico <zmedico@gentoo.org>
Sun, 22 May 2011 19:43:03 +0000 (12:43 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 26 May 2011 04:19:41 +0000 (21:19 -0700)
pym/portage/tests/resolver/ResolverPlayground.py
pym/portage/tests/resolver/test_merge_order.py

index 4a04dc0e119f473f01d8c847e94f167e240a1117..fed937d1ba2ba28b46c058a12cc01a202b2d5bf9 100644 (file)
@@ -521,8 +521,9 @@ class ResolverPlaygroundTestCase(object):
                                                                continue
                                                        new_expected.append(set())
                                                        for cpv in obj:
-                                                               a = Atom("="+cpv, allow_repo=True)
-                                                               new_expected[-1].add(a.cpv)
+                                                               if cpv[:1] != "!":
+                                                                       cpv = Atom("="+cpv, allow_repo=True).cpv
+                                                               new_expected[-1].add(cpv)
                                                expected = new_expected
                                if self.ignore_mergelist_order and got is not None:
                                        got = set(got)
index fdbfcb54d726bb36dd44ee5937bc029091ff3bf1..2df3a99630ff9f3c1dcdc8e271be70f97cb48dc4 100644 (file)
@@ -19,6 +19,7 @@ class MergeOrderTestCase(TestCase):
                        },
                        "app-misc/blocker-update-order-a-1" : {},
                        "app-misc/blocker-runtime-a-1" : {},
+                       "app-misc/blocker-runtime-b-1" : {},
                        "app-misc/blocker-runtime-hard-a-1" : {},
                        "app-misc/circ-buildtime-a-0": {},
                        "app-misc/circ-buildtime-a-1": {
@@ -80,7 +81,7 @@ class MergeOrderTestCase(TestCase):
                        "app-misc/installed-blocker-a-1" : {
                                "EAPI"   : "2",
                                "DEPEND" : "!app-misc/blocker-buildtime-a",
-                               "RDEPEND" : "!app-misc/blocker-runtime-a !!app-misc/blocker-runtime-hard-a",
+                               "RDEPEND" : "!app-misc/blocker-runtime-a !app-misc/blocker-runtime-b !!app-misc/blocker-runtime-hard-a",
                        },
                        "app-misc/installed-old-version-blocks-a-1" : {
                                "RDEPEND" : "!app-misc/blocker-update-order-a",
@@ -112,7 +113,7 @@ class MergeOrderTestCase(TestCase):
                        "app-misc/installed-blocker-a-1" : {
                                "EAPI"   : "2",
                                "DEPEND" : "!app-misc/blocker-buildtime-a",
-                               "RDEPEND" : "!app-misc/blocker-runtime-a !!app-misc/blocker-runtime-hard-a",
+                               "RDEPEND" : "!app-misc/blocker-runtime-a !app-misc/blocker-runtime-b !!app-misc/blocker-runtime-hard-a",
                        },
                        "app-misc/installed-old-version-blocks-a-1" : {
                                "RDEPEND" : "!app-misc/blocker-update-order-a",
@@ -181,13 +182,17 @@ class MergeOrderTestCase(TestCase):
                                success = True,
                                all_permutations = True,
                                mergelist = ["app-misc/installed-old-version-blocks-a-2", "app-misc/blocker-update-order-a-1"]),
-                       # installed package has runtime blocker that
-                       # should cause it to be uninstalled
+                       # The installed package has runtime blockers that
+                       # should cause it to be uninstalled. The uninstall
+                       # task is executed only after blocking packages have
+                       # been merged.
                        # TODO: distinguish between install/uninstall tasks in mergelist
                        ResolverPlaygroundTestCase(
-                               ["app-misc/blocker-runtime-a"],
+                               ["app-misc/blocker-runtime-a", "app-misc/blocker-runtime-b"],
                                success = True,
-                               mergelist = ["app-misc/blocker-runtime-a-1", "app-misc/installed-blocker-a-1", "!app-misc/blocker-runtime-a"]),
+                               all_permutations = True,
+                               ambiguous_merge_order = True,
+                               mergelist = [("app-misc/blocker-runtime-a-1", "app-misc/blocker-runtime-b-1"), "app-misc/installed-blocker-a-1", ("!app-misc/blocker-runtime-a", "!app-misc/blocker-runtime-b")]),
                        # We have a soft buildtime blocker against an installed
                        # package that should cause it to be uninstalled. Note that with
                        # soft blockers, the blocking packages are allowed to temporarily