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
=== modified file 'landscape/package/facade.py'
--- landscape/package/facade.py 2011-10-11 13:24:24 +0000
+++ landscape/package/facade.py 2011-10-11 13:24:24 +0000
@@ -203,6 +203,13 @@
203 """Is the package an upgrade for another installed package?"""203 """Is the package an upgrade for another installed package?"""
204 return package.is_upgradable204 return package.is_upgradable
205205
206 def get_packages_by_name(self, name):
207 """Get all available packages matching the provided name.
208
209 @param name: The name the returned packages should have.
210 """
211 return [pkg for pkg in self.get_packages() if pkg.name == name]
212
206213
207class SmartFacade(object):214class SmartFacade(object):
208 """Wrapper for tasks using Smart.215 """Wrapper for tasks using Smart.
209216
=== modified file 'landscape/package/tests/test_facade.py'
--- landscape/package/tests/test_facade.py 2011-10-11 13:24:24 +0000
+++ landscape/package/tests/test_facade.py 2011-10-11 13:24:24 +0000
@@ -333,12 +333,8 @@
333 create_simple_repository(deb_dir)333 create_simple_repository(deb_dir)
334 self.facade.add_channel_deb_dir(deb_dir)334 self.facade.add_channel_deb_dir(deb_dir)
335 self.facade.reload_channels()335 self.facade.reload_channels()
336 [pkg1] = [336 [pkg1] = self.facade.get_packages_by_name("name1")
337 package for package in self.facade.get_packages()337 [pkg2] = self.facade.get_packages_by_name("name2")
338 if package.name == "name1"]
339 [pkg2] = [
340 package for package in self.facade.get_packages()
341 if package.name == "name2"]
342 skeleton1 = self.facade.get_package_skeleton(pkg1)338 skeleton1 = self.facade.get_package_skeleton(pkg1)
343 self.assertEqual("Summary1", skeleton1.summary)339 self.assertEqual("Summary1", skeleton1.summary)
344 skeleton2 = self.facade.get_package_skeleton(pkg2, with_info=False)340 skeleton2 = self.facade.get_package_skeleton(pkg2, with_info=False)
@@ -354,13 +350,9 @@
354 create_simple_repository(deb_dir)350 create_simple_repository(deb_dir)
355 self.facade.add_channel_deb_dir(deb_dir)351 self.facade.add_channel_deb_dir(deb_dir)
356 self.facade.reload_channels()352 self.facade.reload_channels()
357 [pkg] = [353 [pkg] = self.facade.get_packages_by_name("name1")
358 package for package in self.facade.get_packages()
359 if package.name == "name1"]
360 self.assertEqual(HASH1, self.facade.get_package_hash(pkg))354 self.assertEqual(HASH1, self.facade.get_package_hash(pkg))
361 [pkg] = [355 [pkg] = self.facade.get_packages_by_name("name2")
362 package for package in self.facade.get_packages()
363 if package.name == "name2"]
364 self.assertEqual(HASH2, self.facade.get_package_hash(pkg))356 self.assertEqual(HASH2, self.facade.get_package_hash(pkg))
365357
366 def test_get_package_hashes(self):358 def test_get_package_hashes(self):
@@ -402,15 +394,9 @@
402 self.facade.reload_channels()394 self.facade.reload_channels()
403395
404 # Hold a reference to packages.396 # Hold a reference to packages.
405 [pkg1] = [397 [pkg1] = self.facade.get_packages_by_name("name1")
406 package for package in self.facade.get_packages()398 [pkg2] = self.facade.get_packages_by_name("name2")
407 if package.name == "name1"]399 [pkg3] = self.facade.get_packages_by_name("name3")
408 [pkg2] = [
409 package for package in self.facade.get_packages()
410 if package.name == "name2"]
411 [pkg3] = [
412 package for package in self.facade.get_packages()
413 if package.name == "name3"]
414 self.assertTrue(pkg1 and pkg2)400 self.assertTrue(pkg1 and pkg2)
415401
416 # Remove the package from the repository.402 # Remove the package from the repository.
@@ -463,9 +449,7 @@
463 create_simple_repository(deb_dir)449 create_simple_repository(deb_dir)
464 self.facade.add_channel_deb_dir(deb_dir)450 self.facade.add_channel_deb_dir(deb_dir)
465 self.facade.reload_channels()451 self.facade.reload_channels()
466 [package] = [452 [package] = self.facade.get_packages_by_name("name1")
467 package for package in self.facade.get_packages()
468 if package.name == "name1"]
469 self.assertTrue(self.facade.is_package_available(package))453 self.assertTrue(self.facade.is_package_available(package))
470454
471 def test_is_package_available_not_in_channel_installed(self):455 def test_is_package_available_not_in_channel_installed(self):
@@ -477,9 +461,7 @@
477 create_simple_repository(deb_dir)461 create_simple_repository(deb_dir)
478 self._install_deb_file(os.path.join(deb_dir, PKGNAME1))462 self._install_deb_file(os.path.join(deb_dir, PKGNAME1))
479 self.facade.reload_channels()463 self.facade.reload_channels()
480 [package] = [464 [package] = self.facade.get_packages_by_name("name1")
481 package for package in self.facade.get_packages()
482 if package.name == "name1"]
483 self.assertFalse(self.facade.is_package_available(package))465 self.assertFalse(self.facade.is_package_available(package))
484466
485 def test_is_package_available_in_channel_installed(self):467 def test_is_package_available_in_channel_installed(self):
@@ -492,9 +474,7 @@
492 self._install_deb_file(os.path.join(deb_dir, PKGNAME1))474 self._install_deb_file(os.path.join(deb_dir, PKGNAME1))
493 self.facade.add_channel_deb_dir(deb_dir)475 self.facade.add_channel_deb_dir(deb_dir)
494 self.facade.reload_channels()476 self.facade.reload_channels()
495 [package] = [477 [package] = self.facade.get_packages_by_name("name1")
496 package for package in self.facade.get_packages()
497 if package.name == "name1"]
498 self.assertTrue(self.facade.is_package_available(package))478 self.assertTrue(self.facade.is_package_available(package))
499479
500 def test_is_package_upgrade_in_channel_not_installed(self):480 def test_is_package_upgrade_in_channel_not_installed(self):
@@ -559,6 +539,32 @@
559 [package] = self.facade.get_packages()539 [package] = self.facade.get_packages()
560 self.assertFalse(self.facade.is_package_upgrade(package))540 self.assertFalse(self.facade.is_package_upgrade(package))
561541
542 def test_get_packages_by_name_no_match(self):
543 """
544 If there are no packages with the given name,
545 C{get_packages_by_name} returns an empty list.
546 """
547 self._add_system_package("foo", version="1.0")
548 self.facade.reload_channels()
549 self.assertEqual([], self.facade.get_packages_by_name("bar"))
550
551 def test_get_packages_by_name_match(self):
552 """
553 C{get_packages_by_name} returns all the packages in the
554 available channels that have the specified name.
555 """
556 deb_dir = self.makeDir()
557 self._add_system_package("foo", version="1.0")
558 self._add_package_to_deb_dir(deb_dir, "foo", version="1.5")
559 self.facade.reload_channels()
560 # XXX: This should return two packages, but it doesn't at the
561 # moment. Bug #871641 should make this return ("foo", "1.5") as
562 # well.
563 self.assertEqual(
564 [("foo", "1.0")],
565 sorted([(pkg.name, pkg.candidate.version)
566 for pkg in self.facade.get_packages_by_name("foo")]))
567
562568
563class SmartFacadeTest(LandscapeTest):569class SmartFacadeTest(LandscapeTest):
564570
565571
=== modified file 'landscape/package/tests/test_skeleton.py'
--- landscape/package/tests/test_skeleton.py 2011-10-06 13:21:53 +0000
+++ landscape/package/tests/test_skeleton.py 2011-10-11 13:24:24 +0000
@@ -276,9 +276,7 @@
276276
277 def get_package(self, name):277 def get_package(self, name):
278 """Return the package with the specified name."""278 """Return the package with the specified name."""
279 [package] = [279 [package] = self.facade.get_packages_by_name(name)
280 package for package in self.facade.get_packages()
281 if package.name == name]
282 return package280 return package
283281
284 def build_skeleton(self, *args, **kwargs):282 def build_skeleton(self, *args, **kwargs):

Subscribers

People subscribed via source and target branches

to all changes: