def addSummaryToDifference(self, distro_series_difference):
        """Helper that adds binaries with summary info to the source pubs."""
        # Avoid circular import.
        from lp.soyuz.tests.test_publishing import SoyuzTestPublisher
        distro_series = distro_series_difference.derived_series
        parent_series = distro_series_difference.parent_series
        source_package_name_str = (
            distro_series_difference.source_package_name.name)
        stp = SoyuzTestPublisher()

        if distro_series_difference.difference_type == (
            DistroSeriesDifferenceType.MISSING_FROM_DERIVED_SERIES):
            source_pub = distro_series_difference.parent_source_pub
        else:
            source_pub = distro_series_difference.source_pub

        stp.makeSourcePackageSummaryData(source_pub)
        stp.updateDistroSeriesPackageCache(source_pub.distroseries)

        # updateDistroSeriesPackageCache reconnects the db, so the
        # objects need to be reloaded.
        dsd_source = getUtility(IDistroSeriesDifferenceSource)
        ds_diff = dsd_source.getByDistroSeriesNameAndParentSeries(
            distro_series, source_package_name_str, parent_series)
        return ds_diff
    def _makePublishedSourcePackage(self):
        test_publisher = SoyuzTestPublisher()
        test_data = test_publisher.makeSourcePackageSummaryData()
        source_package_name = test_data["source_package"].sourcepackagename.name
        distroseries_id = test_data["distroseries"].id
        test_publisher.updateDistroSeriesPackageCache(test_data["distroseries"])

        # updateDistroSeriesPackageCache reconnects the db, so the
        # objects need to be reloaded.
        distroseries = getUtility(IDistroSeriesSet).get(distroseries_id)
        return distroseries.getSourcePackage(source_package_name)
    def _makePublishedSourcePackage(self):
        test_publisher = SoyuzTestPublisher()
        test_data = test_publisher.makeSourcePackageSummaryData()
        source_package_name = (
            test_data['source_package'].sourcepackagename.name)
        distroseries_id = test_data['distroseries'].id
        test_publisher.updateDistroSeriesPackageCache(
            test_data['distroseries'])

        # updateDistroSeriesPackageCache reconnects the db, so the
        # objects need to be reloaded.
        distroseries = getUtility(IDistroSeriesSet).get(distroseries_id)
        return distroseries.getSourcePackage(source_package_name)
 def updateDistroSeriesPackageCache(self):
     # Create DistroSeriesPackageCache records for new binary
     # packages.
     #
     # SoyuzTestPublisher.updateDistroSeriesPackageCache() creates
     # a DistroSeriesPackageCache record for the new binary package.
     # The method closes the current DB connection, making references
     # to DB objects in other DB objects unusable. Starting with
     # the distroarchseries, we can create new, valid, instances of
     # objects required later in the test again.
     # of the objects we need later.
     sourcepackagename = self.sourcepackagerelease.sourcepackagename
     publisher = SoyuzTestPublisher()
     publisher.updateDistroSeriesPackageCache(
         self.distroarchseries.distroseries)
     self.distroarchseries = DistroArchSeries.get(self.distroarchseries.id)
     distribution = self.distroarchseries.distroseries.distribution
     releases = distribution.getCurrentSourceReleases([sourcepackagename])
     [(distribution_sourcepackage, dsp_release)] = releases.items()
     self.dsp_release = dsp_release
     self.sourcepackagerelease = dsp_release.sourcepackagerelease
 def updateDistroSeriesPackageCache(self):
     # Create DistroSeriesPackageCache records for new binary
     # packages.
     #
     # SoyuzTestPublisher.updateDistroSeriesPackageCache() creates
     # a DistroSeriesPackageCache record for the new binary package.
     # The method closes the current DB connection, making references
     # to DB objects in other DB objects unusable. Starting with
     # the distroarchseries, we can create new, valid, instances of
     # objects required later in the test again.
     # of the objects we need later.
     sourcepackagename = self.sourcepackagerelease.sourcepackagename
     publisher = SoyuzTestPublisher()
     publisher.updateDistroSeriesPackageCache(
         self.distroarchseries.distroseries)
     self.distroarchseries = DistroArchSeries.get(self.distroarchseries.id)
     distribution = self.distroarchseries.distroseries.distribution
     releases = distribution.getCurrentSourceReleases([sourcepackagename])
     [(distribution_sourcepackage, dsp_release)] = releases.items()
     self.dsp_release = dsp_release
     self.sourcepackagerelease = dsp_release.sourcepackagerelease