Merge ~twom/launchpad:email-ppa-changes into launchpad:master

Proposed by Tom Wardill
Status: Merged
Approved by: Tom Wardill
Approved revision: c5ff0d5f7010b3d0ffd364cc6fad330f1b435e61
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~twom/launchpad:email-ppa-changes
Merge into: launchpad:master
Diff against target: 78 lines (+55/-1)
2 files modified
lib/lp/soyuz/mail/packageupload.py (+1/-1)
lib/lp/soyuz/mail/tests/test_packageupload.py (+54/-0)
Reviewer Review Type Date Requested Status
Colin Watson (community) Approve
Review via email: mp+405108@code.launchpad.net

Commit message

Don't send packageupload mails to non main archive lists

lp: #1929243

To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) :
review: Approve
~twom/launchpad:email-ppa-changes updated
44c5569... by Tom Wardill

Drop redundant is_ppa check

c5ff0d5... by Tom Wardill

Move tests to a better location

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/lib/lp/soyuz/mail/packageupload.py b/lib/lp/soyuz/mail/packageupload.py
2index a5686a1..e6986aa 100644
3--- a/lib/lp/soyuz/mail/packageupload.py
4+++ b/lib/lp/soyuz/mail/packageupload.py
5@@ -391,7 +391,7 @@ class PackageUploadMailer(BaseMailer):
6 # announce if possible. Avoid announcing backports, binary-only
7 # security uploads, or autosync uploads.
8 if (action == 'accepted' and distroseries.changeslist
9- and not archive.is_ppa
10+ and archive.is_main
11 and pocket != PackagePublishingPocket.BACKPORTS
12 and not (
13 pocket == PackagePublishingPocket.SECURITY and spr is None)
14diff --git a/lib/lp/soyuz/mail/tests/test_packageupload.py b/lib/lp/soyuz/mail/tests/test_packageupload.py
15index 3e9c0b1..c7378f9 100644
16--- a/lib/lp/soyuz/mail/tests/test_packageupload.py
17+++ b/lib/lp/soyuz/mail/tests/test_packageupload.py
18@@ -484,6 +484,60 @@ class TestNotification(TestCaseWithFactory):
19 [blamer, changer], changes, blamer, maintainer, changer,
20 purpose=ArchivePurpose.PPA)
21
22+ def test_getRecipientsForAction_primary(self):
23+ blamer, maintainer, changer = self._setup_recipients()
24+ changes = {
25+ 'Date': b'2001-01-01',
26+ 'Changed-By': b'Changer <changer@example.com>',
27+ 'Maintainer': b'Maintainer <maintainer@example.com>',
28+ 'Changes': b' * Foo!',
29+ }
30+ distribution = self.factory.makeDistribution()
31+ archive = self.factory.makeArchive(
32+ distribution=distribution, purpose=ArchivePurpose.PRIMARY)
33+ distroseries = self.factory.makeDistroSeries(distribution=distribution)
34+ distroseries.changeslist = "blah@example.com"
35+ # Now set the uploaders.
36+ component = getUtility(IComponentSet).ensure('main')
37+ if component not in distroseries.components:
38+ self.factory.makeComponentSelection(
39+ distroseries=distroseries, component=component)
40+ distribution.main_archive.newComponentUploader(maintainer, component)
41+ distribution.main_archive.newComponentUploader(changer, component)
42+ info = fetch_information(None, None, changes)
43+ observed, _ = PackageUploadMailer.getRecipientsForAction(
44+ 'accepted', info, blamer, None, [], archive, distroseries,
45+ PackagePublishingPocket.RELEASE)
46+ email_addresses = [x.preferredemail.email for x in observed.keys()]
47+ self.assertIn("blah@example.com", email_addresses)
48+
49+ def test_getRecipientsForAction_copy(self):
50+ blamer, maintainer, changer = self._setup_recipients()
51+ changes = {
52+ 'Date': b'2001-01-01',
53+ 'Changed-By': b'Changer <changer@example.com>',
54+ 'Maintainer': b'Maintainer <maintainer@example.com>',
55+ 'Changes': b' * Foo!',
56+ }
57+ distribution = self.factory.makeDistribution()
58+ archive = self.factory.makeArchive(
59+ distribution=distribution, purpose=ArchivePurpose.COPY)
60+ distroseries = self.factory.makeDistroSeries(distribution=distribution)
61+ distroseries.changeslist = "blah@example.com"
62+ # Now set the uploaders.
63+ component = getUtility(IComponentSet).ensure('main')
64+ if component not in distroseries.components:
65+ self.factory.makeComponentSelection(
66+ distroseries=distroseries, component=component)
67+ distribution.main_archive.newComponentUploader(maintainer, component)
68+ distribution.main_archive.newComponentUploader(changer, component)
69+ info = fetch_information(None, None, changes)
70+ observed, _ = PackageUploadMailer.getRecipientsForAction(
71+ 'accepted', info, blamer, None, [], archive, distroseries,
72+ PackagePublishingPocket.RELEASE)
73+ email_addresses = [x.preferredemail.email for x in observed.keys()]
74+ self.assertNotIn("blah@example.com", email_addresses)
75+
76 def test__getHeaders_primary(self):
77 # _getHeaders returns useful values for headers used for filtering.
78 # For a primary archive, this includes the maintainer and changer.

Subscribers

People subscribed via source and target branches

to status/vote changes: