Merge lp:~mvo/software-center/fix-removal-warning-metapackages into lp:software-center

Proposed by Michael Vogt
Status: Merged
Merged at revision: 3277
Proposed branch: lp:~mvo/software-center/fix-removal-warning-metapackages
Merge into: lp:software-center
Diff against target: 132 lines (+59/-10)
5 files modified
softwarecenter/distro/ubuntu.py (+5/-1)
softwarecenter/ui/gtk3/dialogs/dependency_dialogs.py (+8/-4)
softwarecenter/ui/gtk3/views/appdetailsview.py (+3/-4)
tests/gtk3/test_dialogs.py (+40/-1)
tests/utils.py (+3/-0)
To merge this branch: bzr merge lp:~mvo/software-center/fix-removal-warning-metapackages
Reviewer Review Type Date Requested Status
dobey Approve
Review via email: mp+135688@code.launchpad.net

Description of the change

This branch fixes a missing warning when a metapackage like "ubuntu-desktop"
is marked for removal directly. Currently only indirect removals (e.g. removing
gedit which causes removal of ubuntu-desktop via a rdepends) is caught

To post a comment you must log in.
Revision history for this message
dobey (dobey) wrote :

Would a regression test not be appropriate here?

3245. By Michael Vogt

add regression test for removal of core metapackages, thanks to dobey for suggesting this

3246. By Michael Vogt

merged trunk and resolved conflicts

Revision history for this message
Michael Vogt (mvo) wrote :

Yes, definitely. I added a test for the metapackages now.

3247. By Michael Vogt

fix pep8 issues

Revision history for this message
dobey (dobey) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'softwarecenter/distro/ubuntu.py'
2--- softwarecenter/distro/ubuntu.py 2012-11-28 16:58:59 +0000
3+++ softwarecenter/distro/ubuntu.py 2012-12-17 09:59:26 +0000
4@@ -45,7 +45,11 @@
5 ]
6
7 # metapackages
8- IMPORTANT_METAPACKAGES = ("ubuntu-desktop", "kubuntu-desktop")
9+ IMPORTANT_METAPACKAGES = (
10+ "ubuntu-standard",
11+ "ubuntu-minimal",
12+ "ubuntu-desktop",
13+ "kubuntu-desktop")
14
15 # screenshot handling
16 SCREENSHOT_THUMB_URL = ("http://screenshots.ubuntu.com/"
17
18=== modified file 'softwarecenter/ui/gtk3/dialogs/dependency_dialogs.py'
19--- softwarecenter/ui/gtk3/dialogs/dependency_dialogs.py 2012-12-14 16:44:25 +0000
20+++ softwarecenter/ui/gtk3/dialogs/dependency_dialogs.py 2012-12-17 09:59:26 +0000
21@@ -69,13 +69,17 @@
22 # once it works
23 if not appdetails.pkg:
24 return True
25- depends = cache.get_packages_removed_on_remove(appdetails.pkg)
26- if not depends:
27+ if app.pkgname in distro.IMPORTANT_METAPACKAGES:
28+ displayed_depends = set([app.pkgname])
29+ else:
30+ displayed_depends = cache.get_packages_removed_on_remove(
31+ appdetails.pkg)
32+ if not displayed_depends:
33 return True
34 (primary, button_text) = distro.get_removal_warning_text(
35- db._aptcache, appdetails.pkg, app.name, depends)
36+ db._aptcache, appdetails.pkg, app.name, displayed_depends)
37 return _confirm_internal(parent, app, db, icons, primary,
38- button_text, depends, cache)
39+ button_text, displayed_depends, cache)
40
41
42 def _get_confirm_internal_dialog(parent, app, db, icons, primary,
43
44=== modified file 'softwarecenter/ui/gtk3/views/appdetailsview.py'
45--- softwarecenter/ui/gtk3/views/appdetailsview.py 2012-12-17 09:01:00 +0000
46+++ softwarecenter/ui/gtk3/views/appdetailsview.py 2012-12-17 09:59:26 +0000
47@@ -2005,10 +2005,9 @@
48
49 # if we need to purchase/enable the report use the agent info
50 if self.app_details.pkg_state in (
51- PkgStates.NEEDS_SOURCE,
52- PkgStates.NEEDS_PURCHASE,
53- PkgStates.PURCHASED_BUT_REPO_MUST_BE_ENABLED,
54- ):
55+ PkgStates.NEEDS_SOURCE,
56+ PkgStates.NEEDS_PURCHASE,
57+ PkgStates.PURCHASED_BUT_REPO_MUST_BE_ENABLED):
58 if self.app_details.size:
59 self.totalsize_info.set_value(
60 GLib.format_size(self.app_details.size))
61
62=== modified file 'tests/gtk3/test_dialogs.py'
63--- tests/gtk3/test_dialogs.py 2012-11-28 15:52:31 +0000
64+++ tests/gtk3/test_dialogs.py 2012-12-17 09:59:26 +0000
65@@ -1,10 +1,23 @@
66 import unittest
67
68+from mock import (
69+ Mock,
70+ patch,
71+)
72+
73 from gi.repository import Gtk, GLib
74-from tests.utils import setup_test_env
75+from tests.utils import (
76+ get_test_gtk3_icon_cache,
77+ setup_test_env,
78+ FakedCache,
79+)
80 setup_test_env()
81
82 import softwarecenter.ui.gtk3.dialogs
83+from softwarecenter.db.application import Application
84+from softwarecenter.ui.gtk3.dialogs.dependency_dialogs import (
85+ confirm_remove,
86+ )
87 from tests.gtk3.windows import get_test_window_dependency_dialog
88
89 # window destory timeout
90@@ -43,5 +56,31 @@
91 def _close_dialog(self):
92 softwarecenter.ui.gtk3.dialogs._DIALOG.response(0)
93
94+
95+class TestDependencyDialog(unittest.TestCase):
96+
97+ def setUp(self):
98+ self.parent = None
99+ self.db = Mock()
100+ self.db._aptcache = FakedCache()
101+ self.icons = get_test_gtk3_icon_cache()
102+
103+ @patch("softwarecenter.ui.gtk3.dialogs.dependency_dialogs"
104+ "._get_confirm_internal_dialog")
105+ def test_removing_dependency_dialog_warning_on_ud(self, mock):
106+ app = Application("", "ubuntu-desktop")
107+ self.db._aptcache["ubuntu-desktop"] = Mock()
108+ confirm_remove(self.parent, app, self.db, self.icons)
109+ self.assertTrue(mock.called)
110+
111+ @patch("softwarecenter.ui.gtk3.dialogs.dependency_dialogs"
112+ "._get_confirm_internal_dialog")
113+ def test_removing_dependency_dialog_warning_on_non_ud(self, mock):
114+ app = Application("Some random app", "meep")
115+ self.db._aptcache["meep"] = Mock()
116+ confirm_remove(self.parent, app, self.db, self.icons)
117+ self.assertFalse(mock.called)
118+
119+
120 if __name__ == "__main__":
121 unittest.main()
122
123=== modified file 'tests/utils.py'
124--- tests/utils.py 2012-12-14 08:38:18 +0000
125+++ tests/utils.py 2012-12-17 09:59:26 +0000
126@@ -486,3 +486,6 @@
127 addons_to_remove, archive_suite):
128 """Emit a fake signal "query-total-size-on-install-done" """
129 self.emit("query-total-size-on-install-done", None, "", 0, 0)
130+
131+ def get_packages_removed_on_remove(self, pkgname):
132+ return []

Subscribers

People subscribed via source and target branches