class TestBugIDsFromChangesFile(TestCaseWithFactory):
    """Test get_bug_ids_from_changes_file."""

    layer = LaunchpadZopelessLayer
    dbuser = config.uploadqueue.dbuser

    def setUp(self):
        super(TestBugIDsFromChangesFile, self).setUp()
        self.changes = Changes({
            'Format': '1.8',
            'Source': 'swat',
        })

    def getBugIDs(self):
        """Serialize self.changes and use get_bug_ids_from_changes_file to
        extract bug IDs from it.
        """
        stream = StringIO()
        self.changes.dump(stream)
        stream.seek(0)
        return get_bug_ids_from_changes_file(stream)

    def test_no_bugs(self):
        # An empty list is returned if there are no bugs
        # mentioned.
        self.assertEqual([], self.getBugIDs())

    def test_invalid_bug_id(self):
        # Invalid bug ids (i.e. containing non-digit characters) are ignored.
        self.changes["Launchpad-Bugs-Fixed"] = "bla"
        self.assertEqual([], self.getBugIDs())

    def test_unknown_bug_id(self):
        # Unknown bug ids are passed through; they will be ignored later, by
        # close_bug_ids_for_sourcepackagerelease.
        self.changes["Launchpad-Bugs-Fixed"] = "45120"
        self.assertEqual([45120], self.getBugIDs())

    def test_valid_bug(self):
        # For valid bug ids the bug object is returned.
        bug = self.factory.makeBug()
        self.changes["Launchpad-Bugs-Fixed"] = "%d" % bug.id
        self.assertEqual([bug.id], self.getBugIDs())

    def test_case_sensitivity(self):
        # The spelling of Launchpad-Bugs-Fixed is case-insensitive.
        bug = self.factory.makeBug()
        self.changes["LaUnchpad-Bugs-fixed"] = "%d" % bug.id
        self.assertEqual([bug.id], self.getBugIDs())

    def test_multiple_bugs(self):
        # Multiple bug ids can be specified, separated by spaces.
        bug1 = self.factory.makeBug()
        bug2 = self.factory.makeBug()
        self.changes["Launchpad-Bugs-Fixed"] = "%d invalid %d" % (bug1.id,
                                                                  bug2.id)
        self.assertEqual([bug1.id, bug2.id], self.getBugIDs())
class TestBugIDsFromChangesFile(TestCaseWithFactory):
    """Test get_bug_ids_from_changes_file."""

    layer = LaunchpadZopelessLayer
    dbuser = config.uploadqueue.dbuser

    def setUp(self):
        super(TestBugIDsFromChangesFile, self).setUp()
        self.changes = Changes({
            'Format': '1.8',
            'Source': 'swat',
            })

    def getBugIDs(self):
        """Serialize self.changes and use get_bug_ids_from_changes_file to
        extract bug IDs from it.
        """
        stream = StringIO()
        self.changes.dump(stream)
        stream.seek(0)
        return get_bug_ids_from_changes_file(stream)

    def test_no_bugs(self):
        # An empty list is returned if there are no bugs
        # mentioned.
        self.assertEqual([], self.getBugIDs())

    def test_invalid_bug_id(self):
        # Invalid bug ids (i.e. containing non-digit characters) are ignored.
        self.changes["Launchpad-Bugs-Fixed"] = "bla"
        self.assertEqual([], self.getBugIDs())

    def test_unknown_bug_id(self):
        # Unknown bug ids are passed through; they will be ignored later, by
        # close_bug_ids_for_sourcepackagerelease.
        self.changes["Launchpad-Bugs-Fixed"] = "45120"
        self.assertEqual([45120], self.getBugIDs())

    def test_valid_bug(self):
        # For valid bug ids the bug object is returned.
        bug = self.factory.makeBug()
        self.changes["Launchpad-Bugs-Fixed"] = "%d" % bug.id
        self.assertEqual([bug.id], self.getBugIDs())

    def test_case_sensitivity(self):
        # The spelling of Launchpad-Bugs-Fixed is case-insensitive.
        bug = self.factory.makeBug()
        self.changes["LaUnchpad-Bugs-fixed"] = "%d" % bug.id
        self.assertEqual([bug.id], self.getBugIDs())

    def test_multiple_bugs(self):
        # Multiple bug ids can be specified, separated by spaces.
        bug1 = self.factory.makeBug()
        bug2 = self.factory.makeBug()
        self.changes["Launchpad-Bugs-Fixed"] = "%d invalid %d" % (
            bug1.id, bug2.id)
        self.assertEqual([bug1.id, bug2.id], self.getBugIDs())
Пример #3
0
def cross(envdir, changesfile, target_arch):
    with open(changesfile, 'r') as fh:
        changes = Changes(fh)

    new_debs = []
    removed_debs = []
    for fi in changes['Files']:
        print fi
        if _needs_crossing(fi):
            cross_deb_name = _cross_deb(envdir, changesfile, fi, target_arch)
            new_debs.append(cross_deb_name)
            if _cross_only(fi):
                removed_debs.append(fi)
    for cross_deb_name in new_debs:
        _add_deb(changes, cross_deb_name)
    for fileinfo in removed_debs:
        _remove_deb(changes, fileinfo)

    out = changesfile.stripext() + '.cross.changes'
    with open(out, 'w') as ofh:
        changes.dump(ofh)
    return out
Пример #4
0
def cross(envdir, changesfile, target_arch):
    with open(changesfile, 'r') as fh:
        changes = Changes(fh)

    new_debs = []
    removed_debs = []
    for fi in changes['Files']:
        print fi
        if _needs_crossing(fi):
            cross_deb_name = _cross_deb(envdir, changesfile, fi, target_arch)
            new_debs.append(cross_deb_name)
            if _cross_only(fi):
                removed_debs.append(fi)
    for cross_deb_name in new_debs:
        _add_deb(changes, cross_deb_name)
    for fileinfo in removed_debs:
        _remove_deb(changes, fileinfo)

    out = changesfile.stripext() + '.cross.changes'
    with open(out, 'w') as ofh:
        changes.dump(ofh)
    return out
Пример #5
0
 def test_run(self):
     # Running a job produces a notification.  Detailed tests of which
     # notifications go to whom live in the PackageUpload and
     # PackageUploadMailer tests.
     distroseries = self.factory.makeDistroSeries()
     creator = self.factory.makePerson()
     changes = Changes({"Changed-By": format_address_for_person(creator)})
     upload = self.factory.makePackageUpload(
         distroseries=distroseries,
         archive=distroseries.main_archive,
         changes_file_content=changes.dump().encode("UTF-8"))
     upload.addSource(self.factory.makeSourcePackageRelease())
     self.factory.makeComponentSelection(
         upload.distroseries, upload.sourcepackagerelease.component)
     upload.setAccepted()
     job = PackageUploadNotificationJob.create(upload,
                                               summary_text='Fake summary')
     with dbuser(job.config.dbuser):
         JobRunner([job]).runAll()
     [email] = pop_notifications()
     self.assertEqual(format_address_for_person(creator), email['To'])
     self.assertIn('(Accepted)', email['Subject'])
     self.assertIn('Fake summary', email.get_payload()[0].get_payload())