Test --prune with virtual slots.
authorZac Medico <zmedico@gentoo.org>
Mon, 19 Sep 2011 03:05:35 +0000 (20:05 -0700)
committerZac Medico <zmedico@gentoo.org>
Mon, 19 Sep 2011 03:05:35 +0000 (20:05 -0700)
pym/_emerge/actions.py
pym/portage/tests/resolver/ResolverPlayground.py
pym/portage/tests/resolver/test_virtual_slot.py

index 82adca794281709a90e76055a4fe84a512ef5498..08f70df05757df2cf70b376e7bab44bf50b3b03a 100644 (file)
@@ -706,7 +706,8 @@ def calc_depclean(settings, trees, ldpath_mtimes,
                # that are also matched by argument atoms, but do not remove
                # them if they match the highest installed version.
                for pkg in vardb:
-                       spinner.update()
+                       if spinner is not None:
+                               spinner.update()
                        pkgs_for_cp = vardb.match_pkgs(pkg.cp)
                        if not pkgs_for_cp or pkg not in pkgs_for_cp:
                                raise AssertionError("package expected in matches: " + \
index adf03d2b7a88c39c5df5673c919b829d50c4fe3d..a73f63253467d74044d573e9f8a9d9715488c8d0 100644 (file)
@@ -511,6 +511,12 @@ class ResolverPlayground(object):
                if self.debug:
                        options["--debug"] = True
 
+               if action is None:
+                       if options.get("--depclean"):
+                               action = "depclean"
+                       elif options.get("--prune"):
+                               action = "prune"
+
                global_noiselimit = portage.util.noiselimit
                global_emergelog_disable = _emerge.emergelog._disable
                try:
@@ -519,10 +525,10 @@ class ResolverPlayground(object):
                                portage.util.noiselimit = -2
                        _emerge.emergelog._disable = True
 
-                       if options.get("--depclean"):
+                       if action in ("depclean", "prune"):
                                rval, cleanlist, ordered, req_pkg_count = \
                                        calc_depclean(self.settings, self.trees, None,
-                                       options, "depclean", InternalPackageSet(initial_atoms=atoms, allow_wildcard=True), None)
+                                       options, action, InternalPackageSet(initial_atoms=atoms, allow_wildcard=True), None)
                                result = ResolverPlaygroundDepcleanResult( \
                                        atoms, rval, cleanlist, ordered, req_pkg_count)
                        else:
index 4ea66772eb1b0103cf9be68cede7e8f58f3f9337..1b19d774a75f1c9c4f478e0fab38e869543c6926 100644 (file)
@@ -123,6 +123,13 @@ class VirtualSlotResolverTestCase(TestCase):
                                options = {"--depclean" : True},
                                success = True,
                                cleanlist = []),
+
+                       # Prune redundant lower slots, even if they are in world.
+                       ResolverPlaygroundTestCase(
+                               [],
+                               options = {"--prune" : True},
+                               success = True,
+                               cleanlist = ['virtual/jdk-1.6.0', 'dev-java/icedtea-6.1.10.3']),
                )
 
                playground = ResolverPlayground(