Merge lp:~cjwatson/launchpad/fix-packagediff-private-harder into lp:launchpad

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: no longer in the source branch.
Merged at revision: 15644
Proposed branch: lp:~cjwatson/launchpad/fix-packagediff-private-harder
Merge into: lp:launchpad
Diff against target: 44 lines (+13/-2)
3 files modified
lib/lp/soyuz/doc/package-diff.txt (+1/-0)
lib/lp/soyuz/model/packagediff.py (+3/-2)
lib/lp/soyuz/tests/test_packagediff.py (+9/-0)
To merge this branch: bzr merge lp:~cjwatson/launchpad/fix-packagediff-private-harder
Reviewer Review Type Date Requested Status
Richard Harding (community) Approve
Review via email: mp+115352@code.launchpad.net

Commit message

Consider SPR.upload_archive as well as SPR.published_archives when deciding whether a PackageDiff should be private.

Description of the change

== Summary ==

https://code.launchpad.net/~cjwatson/launchpad/fix-packagediff-private/+merge/114759 caused package diffs generated for not-yet-published SPRs to be inappropriately private.

== Proposed fix ==

Consider the privacy of the upload archive as well as that of published archives.

== LOC Rationale ==

+10. Same rationale as https://code.launchpad.net/~cjwatson/launchpad/fix-packagediff-private/+merge/114759.

== Tests ==

bin/test -vvct test_packagediff

== Demo and Q/A ==

Upload a package to a frozen or stable series on dogfood. Generate the pending package diff for it, then accept it. Check that the package diff is public.

To post a comment you must log in.
Revision history for this message
Richard Harding (rharding) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/soyuz/doc/package-diff.txt'
2--- lib/lp/soyuz/doc/package-diff.txt 2012-07-14 16:53:51 +0000
3+++ lib/lp/soyuz/doc/package-diff.txt 2012-07-17 22:39:20 +0000
4@@ -732,6 +732,7 @@
5
6 >>> private_ppa = factory.makeArchive(private=True)
7 >>> from zope.security.proxy import removeSecurityProxy
8+ >>> removeSecurityProxy(diff.to_source).upload_archive = private_ppa
9 >>> removeSecurityProxy(biscuit_two_pub).archive = private_ppa
10
11 >>> print diff.private
12
13=== modified file 'lib/lp/soyuz/model/packagediff.py'
14--- lib/lp/soyuz/model/packagediff.py 2012-07-12 23:47:04 +0000
15+++ lib/lp/soyuz/model/packagediff.py 2012-07-17 22:39:20 +0000
16@@ -145,8 +145,9 @@
17 @property
18 def private(self):
19 """See `IPackageDiff`."""
20- return all(
21- archive.private for archive in self.to_source.published_archives)
22+ to_source = self.to_source
23+ archives = [to_source.upload_archive] + to_source.published_archives
24+ return all(archive.private for archive in archives)
25
26 def _countDeletedLFAs(self):
27 """How many files associated with either source package have been
28
29=== modified file 'lib/lp/soyuz/tests/test_packagediff.py'
30--- lib/lp/soyuz/tests/test_packagediff.py 2012-07-12 23:47:04 +0000
31+++ lib/lp/soyuz/tests/test_packagediff.py 2012-07-17 22:39:20 +0000
32@@ -119,3 +119,12 @@
33 public_spr = self.factory.makeSourcePackageRelease(archive=ppa)
34 public_diff = public_spr.requestDiffTo(p3a.owner, orig_spr)
35 self.assertFalse(public_diff.private)
36+
37+ def test_packagediff_public_unpublished(self):
38+ # If an SPR has been uploaded to a public archive but not yet
39+ # published, diffs to it are public.
40+ ppa = self.factory.makeArchive()
41+ from_spr = self.factory.makeSourcePackageRelease(archive=ppa)
42+ to_spr = self.factory.makeSourcePackageRelease(archive=ppa)
43+ diff = from_spr.requestDiffTo(ppa.owner, to_spr)
44+ self.assertFalse(diff.private)