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())
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
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())