← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~rvb/launchpad/order-diff-list into lp:launchpad

 

Raphaël Victor Badin has proposed merging lp:~rvb/launchpad/order-diff-list into lp:launchpad.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)
Related bugs:
  Bug #758776 in Launchpad itself: "DistroSeriesDifference's getForDistroSeries should return differences sorted by package name."
  https://bugs.launchpad.net/launchpad/+bug/758776

For more details, see:
https://code.launchpad.net/~rvb/launchpad/order-diff-list/+merge/57322

This branch fixes the class method DistroSeriesDifference.getForDistroSeries. The differences are sorted by package name.

= Test =
./bin/test -cvv test_distroseriesdifference test_getForDistroSeries_sorted_by_package_name

= QA =
The +localpackagediffs table should be ordered by package name:
    https://launchpad.dev/deribuntu/deriwarty/+localpackagediffs
    https://dogfood.launchpad.net/ubuntu/maverick/+localpackagediffs
-- 
https://code.launchpad.net/~rvb/launchpad/order-diff-list/+merge/57322
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~rvb/launchpad/order-diff-list into lp:launchpad.
=== modified file 'lib/lp/registry/interfaces/distroseriesdifference.py'
--- lib/lp/registry/interfaces/distroseriesdifference.py	2011-04-06 07:34:18 +0000
+++ lib/lp/registry/interfaces/distroseriesdifference.py	2011-04-12 13:57:31 +0000
@@ -270,7 +270,8 @@
         source_package_name_filter=None,
         status=None,
         child_version_higher=False):
-        """Return differences for the derived distro series.
+        """Return differences for the derived distro series sorted by
+        package name.
 
         :param distro_series: The derived distribution series which is to be
             searched for differences.

=== modified file 'lib/lp/registry/model/distroseriesdifference.py'
--- lib/lp/registry/model/distroseriesdifference.py	2011-04-06 22:51:53 +0000
+++ lib/lp/registry/model/distroseriesdifference.py	2011-04-12 13:57:31 +0000
@@ -141,13 +141,13 @@
             DistroSeriesDifference.derived_series == distro_series,
             DistroSeriesDifference.difference_type == difference_type,
             DistroSeriesDifference.status.is_in(status),
-        ]
+            DistroSeriesDifference.source_package_name ==
+                SourcePackageName.id,
+         ]
 
         if source_package_name_filter:
             conditions.extend([
-                DistroSeriesDifference.source_package_name ==
-                    SourcePackageName.id,
-                SourcePackageName.name == source_package_name_filter])
+               SourcePackageName.name == source_package_name_filter])
 
         if child_version_higher:
             conditions.extend([
@@ -156,7 +156,7 @@
 
         return IStore(DistroSeriesDifference).find(
             DistroSeriesDifference,
-            And(*conditions))
+            And(*conditions)).order_by(SourcePackageName.name)
 
     @staticmethod
     def getByDistroSeriesAndName(distro_series, source_package_name):

=== modified file 'lib/lp/registry/tests/test_distroseriesdifference.py'
--- lib/lp/registry/tests/test_distroseriesdifference.py	2011-04-06 15:26:34 +0000
+++ lib/lp/registry/tests/test_distroseriesdifference.py	2011-04-12 13:57:31 +0000
@@ -799,6 +799,22 @@
 
         self.assertContentEqual(diffs['normal'] + diffs['ignored'], result)
 
+    def test_getForDistroSeries_sorted_by_package_name(self):
+        # The differences are sorted by package name.
+        derived_series = self.makeDerivedSeries()
+        names = []
+        for i in range(10):
+            diff = self.factory.makeDistroSeriesDifference(
+                derived_series=derived_series)
+            names.append(diff.source_package_name.name)
+
+        results = getUtility(
+            IDistroSeriesDifferenceSource).getForDistroSeries(derived_series)
+
+        self.assertContentEqual(
+            sorted(names),
+            [result.source_package_name.name for result in results])
+
     def test_getByDistroSeriesAndName(self):
         # An individual difference is obtained using the name.
         ds_diff = self.factory.makeDistroSeriesDifference(