summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-09-18 20:05:35 -0700
committerZac Medico <zmedico@gentoo.org>2011-09-18 20:05:35 -0700
commit81e0f87b5c1da0ebc531d89846135b72743e71e0 (patch)
tree8b4dd6c84f2a6b7ddd47e8557c018db39eb20f38
parent89664c0c4280372be5b593880c2ac5ccc695f688 (diff)
downloadportage-81e0f87b5c1da0ebc531d89846135b72743e71e0.tar.gz
portage-81e0f87b5c1da0ebc531d89846135b72743e71e0.tar.bz2
portage-81e0f87b5c1da0ebc531d89846135b72743e71e0.zip
Test --prune with virtual slots.
-rw-r--r--pym/_emerge/actions.py3
-rw-r--r--pym/portage/tests/resolver/ResolverPlayground.py10
-rw-r--r--pym/portage/tests/resolver/test_virtual_slot.py7
3 files changed, 17 insertions, 3 deletions
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
index 82adca794..08f70df05 100644
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@ -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: " + \
diff --git a/pym/portage/tests/resolver/ResolverPlayground.py b/pym/portage/tests/resolver/ResolverPlayground.py
index adf03d2b7..a73f63253 100644
--- a/pym/portage/tests/resolver/ResolverPlayground.py
+++ b/pym/portage/tests/resolver/ResolverPlayground.py
@@ -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:
diff --git a/pym/portage/tests/resolver/test_virtual_slot.py b/pym/portage/tests/resolver/test_virtual_slot.py
index 4ea66772e..1b19d774a 100644
--- a/pym/portage/tests/resolver/test_virtual_slot.py
+++ b/pym/portage/tests/resolver/test_virtual_slot.py
@@ -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(