Merge lp:~bjornt/landscape-client/apt-get-packages-by-name into lp:~landscape/landscape-client/trunk

Proposed by Björn Tillenius
Status: Merged
Approved by: Thomas Herve
Approved revision: 423
Merged at revision: 375
Proposed branch: lp:~bjornt/landscape-client/apt-get-packages-by-name
Merge into: lp:~landscape/landscape-client/trunk
Prerequisite: lp:~bjornt/landscape-client/apt-detect-changes
Diff against target: 152 lines (+44/-33)
3 files modified
landscape/package/facade.py (+7/-0)
landscape/package/tests/test_facade.py (+36/-30)
landscape/package/tests/test_skeleton.py (+1/-3)
To merge this branch: bzr merge lp:~bjornt/landscape-client/apt-get-packages-by-name
Reviewer Review Type Date Requested Status
Jerry Seutter (community) Abstain
Thomas Herve (community) Approve
Alberto Donato (community) Approve
Review via email: mp+78837@code.launchpad.net

Description of the change

Add AptFacade.get_packages_by_names() and update all places that got
packages by name to use this method.

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

+1!

review: Approve
423. By Björn Tillenius

Merged apt-detect-changes into apt-get-packages-by-name.

Revision history for this message
Thomas Herve (therve) wrote :

Looks good.

review: Approve
Revision history for this message
Jerry Seutter (jseutter) :
review: Abstain

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'landscape/package/facade.py'
2--- landscape/package/facade.py 2011-10-11 13:24:24 +0000
3+++ landscape/package/facade.py 2011-10-11 13:24:24 +0000
4@@ -203,6 +203,13 @@
5 """Is the package an upgrade for another installed package?"""
6 return package.is_upgradable
7
8+ def get_packages_by_name(self, name):
9+ """Get all available packages matching the provided name.
10+
11+ @param name: The name the returned packages should have.
12+ """
13+ return [pkg for pkg in self.get_packages() if pkg.name == name]
14+
15
16 class SmartFacade(object):
17 """Wrapper for tasks using Smart.
18
19=== modified file 'landscape/package/tests/test_facade.py'
20--- landscape/package/tests/test_facade.py 2011-10-11 13:24:24 +0000
21+++ landscape/package/tests/test_facade.py 2011-10-11 13:24:24 +0000
22@@ -333,12 +333,8 @@
23 create_simple_repository(deb_dir)
24 self.facade.add_channel_deb_dir(deb_dir)
25 self.facade.reload_channels()
26- [pkg1] = [
27- package for package in self.facade.get_packages()
28- if package.name == "name1"]
29- [pkg2] = [
30- package for package in self.facade.get_packages()
31- if package.name == "name2"]
32+ [pkg1] = self.facade.get_packages_by_name("name1")
33+ [pkg2] = self.facade.get_packages_by_name("name2")
34 skeleton1 = self.facade.get_package_skeleton(pkg1)
35 self.assertEqual("Summary1", skeleton1.summary)
36 skeleton2 = self.facade.get_package_skeleton(pkg2, with_info=False)
37@@ -354,13 +350,9 @@
38 create_simple_repository(deb_dir)
39 self.facade.add_channel_deb_dir(deb_dir)
40 self.facade.reload_channels()
41- [pkg] = [
42- package for package in self.facade.get_packages()
43- if package.name == "name1"]
44+ [pkg] = self.facade.get_packages_by_name("name1")
45 self.assertEqual(HASH1, self.facade.get_package_hash(pkg))
46- [pkg] = [
47- package for package in self.facade.get_packages()
48- if package.name == "name2"]
49+ [pkg] = self.facade.get_packages_by_name("name2")
50 self.assertEqual(HASH2, self.facade.get_package_hash(pkg))
51
52 def test_get_package_hashes(self):
53@@ -402,15 +394,9 @@
54 self.facade.reload_channels()
55
56 # Hold a reference to packages.
57- [pkg1] = [
58- package for package in self.facade.get_packages()
59- if package.name == "name1"]
60- [pkg2] = [
61- package for package in self.facade.get_packages()
62- if package.name == "name2"]
63- [pkg3] = [
64- package for package in self.facade.get_packages()
65- if package.name == "name3"]
66+ [pkg1] = self.facade.get_packages_by_name("name1")
67+ [pkg2] = self.facade.get_packages_by_name("name2")
68+ [pkg3] = self.facade.get_packages_by_name("name3")
69 self.assertTrue(pkg1 and pkg2)
70
71 # Remove the package from the repository.
72@@ -463,9 +449,7 @@
73 create_simple_repository(deb_dir)
74 self.facade.add_channel_deb_dir(deb_dir)
75 self.facade.reload_channels()
76- [package] = [
77- package for package in self.facade.get_packages()
78- if package.name == "name1"]
79+ [package] = self.facade.get_packages_by_name("name1")
80 self.assertTrue(self.facade.is_package_available(package))
81
82 def test_is_package_available_not_in_channel_installed(self):
83@@ -477,9 +461,7 @@
84 create_simple_repository(deb_dir)
85 self._install_deb_file(os.path.join(deb_dir, PKGNAME1))
86 self.facade.reload_channels()
87- [package] = [
88- package for package in self.facade.get_packages()
89- if package.name == "name1"]
90+ [package] = self.facade.get_packages_by_name("name1")
91 self.assertFalse(self.facade.is_package_available(package))
92
93 def test_is_package_available_in_channel_installed(self):
94@@ -492,9 +474,7 @@
95 self._install_deb_file(os.path.join(deb_dir, PKGNAME1))
96 self.facade.add_channel_deb_dir(deb_dir)
97 self.facade.reload_channels()
98- [package] = [
99- package for package in self.facade.get_packages()
100- if package.name == "name1"]
101+ [package] = self.facade.get_packages_by_name("name1")
102 self.assertTrue(self.facade.is_package_available(package))
103
104 def test_is_package_upgrade_in_channel_not_installed(self):
105@@ -559,6 +539,32 @@
106 [package] = self.facade.get_packages()
107 self.assertFalse(self.facade.is_package_upgrade(package))
108
109+ def test_get_packages_by_name_no_match(self):
110+ """
111+ If there are no packages with the given name,
112+ C{get_packages_by_name} returns an empty list.
113+ """
114+ self._add_system_package("foo", version="1.0")
115+ self.facade.reload_channels()
116+ self.assertEqual([], self.facade.get_packages_by_name("bar"))
117+
118+ def test_get_packages_by_name_match(self):
119+ """
120+ C{get_packages_by_name} returns all the packages in the
121+ available channels that have the specified name.
122+ """
123+ deb_dir = self.makeDir()
124+ self._add_system_package("foo", version="1.0")
125+ self._add_package_to_deb_dir(deb_dir, "foo", version="1.5")
126+ self.facade.reload_channels()
127+ # XXX: This should return two packages, but it doesn't at the
128+ # moment. Bug #871641 should make this return ("foo", "1.5") as
129+ # well.
130+ self.assertEqual(
131+ [("foo", "1.0")],
132+ sorted([(pkg.name, pkg.candidate.version)
133+ for pkg in self.facade.get_packages_by_name("foo")]))
134+
135
136 class SmartFacadeTest(LandscapeTest):
137
138
139=== modified file 'landscape/package/tests/test_skeleton.py'
140--- landscape/package/tests/test_skeleton.py 2011-10-06 13:21:53 +0000
141+++ landscape/package/tests/test_skeleton.py 2011-10-11 13:24:24 +0000
142@@ -276,9 +276,7 @@
143
144 def get_package(self, name):
145 """Return the package with the specified name."""
146- [package] = [
147- package for package in self.facade.get_packages()
148- if package.name == name]
149+ [package] = self.facade.get_packages_by_name(name)
150 return package
151
152 def build_skeleton(self, *args, **kwargs):

Subscribers

People subscribed via source and target branches

to all changes: