← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~rvb/launchpad/bug-793434-devel into lp:launchpad

 

Raphaël Victor Badin has proposed merging lp:~rvb/launchpad/bug-793434-devel into lp:launchpad.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)
Related bugs:
  Bug #793434 in Launchpad itself: "Passing packagesets=None triggers an error when initializing a series."
  https://bugs.launchpad.net/launchpad/+bug/793434

For more details, see:
https://code.launchpad.net/~rvb/launchpad/bug-793434-devel/+merge/63667

InitialiseDistroSeriesJob.create should accept None as a possible parameter for arches, packagesets, overlays, overlay_pockets and overlay_components.

= QA =

On DF:
- Create a new series.
- Initialise it with series/+initseries without selecting any packageset.
- Run the initialisation job
- Make sure the initialisation went through.

= Tests = 

./bin/test -cvv test_initialisedistroseriesjob test_job_with_none_arguments
-- 
https://code.launchpad.net/~rvb/launchpad/bug-793434-devel/+merge/63667
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~rvb/launchpad/bug-793434-devel into lp:launchpad.
=== modified file 'lib/lp/soyuz/model/initialisedistroseriesjob.py'
--- lib/lp/soyuz/model/initialisedistroseriesjob.py	2011-05-31 15:40:10 +0000
+++ lib/lp/soyuz/model/initialisedistroseriesjob.py	2011-06-07 09:56:06 +0000
@@ -11,11 +11,12 @@
     classProvides,
     implements,
     )
+
 from canonical.launchpad.interfaces.lpstorm import (
     IMasterStore,
     IStore,
     )
-from lp.registry.model.distroseries import DistroSeries
+from lp.services.job.model.job import Job
 from lp.soyuz.interfaces.distributionjob import (
     DistributionJobType,
     IInitialiseDistroSeriesJob,
@@ -26,8 +27,6 @@
     DistributionJobDerived,
     )
 from lp.soyuz.scripts.initialise_distroseries import InitialiseDistroSeries
-from lp.services.job.model.job import Job
-from lp.services.database import bulk
 
 
 class InitialiseDistroSeriesJob(DistributionJobDerived):
@@ -74,23 +73,38 @@
 
     @property
     def overlays(self):
-        return tuple(self.metadata['overlays'])
+        if self.metadata['overlays'] is None:
+            return ()
+        else:
+            return tuple(self.metadata['overlays'])
 
     @property
     def overlay_pockets(self):
-        return tuple(self.metadata['overlay_pockets'])
+        if self.metadata['overlay_pockets'] is None:
+            return ()
+        else:
+            return tuple(self.metadata['overlay_pockets'])
 
     @property
     def overlay_components(self):
-        return tuple(self.metadata['overlay_components'])
+        if self.metadata['overlay_components'] is None:
+            return ()
+        else:
+            return tuple(self.metadata['overlay_components'])
 
     @property
     def arches(self):
-        return tuple(self.metadata['arches'])
+        if self.metadata['arches'] is None:
+            return ()
+        else:
+            return tuple(self.metadata['arches'])
 
     @property
     def packagesets(self):
-        return tuple(self.metadata['packagesets'])
+        if self.metadata['packagesets'] is None:
+            return ()
+        else:
+            return tuple(self.metadata['packagesets'])
 
     @property
     def rebuild(self):

=== modified file 'lib/lp/soyuz/tests/test_initialisedistroseriesjob.py'
--- lib/lp/soyuz/tests/test_initialisedistroseriesjob.py	2011-06-01 12:46:52 +0000
+++ lib/lp/soyuz/tests/test_initialisedistroseriesjob.py	2011-06-07 09:56:06 +0000
@@ -195,6 +195,18 @@
         self.assertEqual(child.binarycount, 0)
         self.assertEqual(builds.count(), 1)
 
+    def test_job_with_none_arguments(self):
+        parent, child = self._create_child()
+        job = self.job_source.create(
+            child, [parent.id], packagesets=None, arches=None,
+            overlays=None, overlay_pockets=None,
+            overlay_components=None, rebuild=True)
+        self.layer.switchDbUser('initialisedistroseries')
+        job.run()
+        child.updatePackageCount()
+
+        self.assertEqual(parent.sourcecount, child.sourcecount)
+
     def test_cronscript(self):
         run_script(
             'cronscripts/run_jobs.py', ['-v', 'initialisedistroseries'])