Merge lp:~cjwatson/launchpad/allow-missing-changes-binary into lp:launchpad

Proposed by Colin Watson
Status: Merged
Merged at revision: 18881
Proposed branch: lp:~cjwatson/launchpad/allow-missing-changes-binary
Merge into: lp:launchpad
Diff against target: 123 lines (+79/-2)
4 files modified
lib/lp/archiveuploader/changesfile.py (+2/-2)
lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1.dsc (+21/-0)
lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1_source.changes (+27/-0)
lib/lp/archiveuploader/tests/test_uploadprocessor.py (+29/-0)
To merge this branch: bzr merge lp:~cjwatson/launchpad/allow-missing-changes-binary
Reviewer Review Type Date Requested Status
William Grant code Approve
Review via email: mp+363379@code.launchpad.net

Commit message

Allow source .changes files to omit the Binary field.

To post a comment you must log in.
Revision history for this message
William Grant (wgrant) :
review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/archiveuploader/changesfile.py'
--- lib/lp/archiveuploader/changesfile.py 2017-09-17 10:35:57 +0000
+++ lib/lp/archiveuploader/changesfile.py 2019-02-19 16:55:44 +0000
@@ -58,7 +58,7 @@
58 """Changesfile model."""58 """Changesfile model."""
5959
60 mandatory_fields = set([60 mandatory_fields = set([
61 "Source", "Binary", "Architecture", "Version", "Distribution",61 "Source", "Architecture", "Version", "Distribution",
62 "Maintainer", "Files", "Changes", "Date",62 "Maintainer", "Files", "Changes", "Date",
63 # Changed-By is not technically mandatory according to63 # Changed-By is not technically mandatory according to
64 # Debian policy but Soyuz relies on it being set in64 # Debian policy but Soyuz relies on it being set in
@@ -311,7 +311,7 @@
311 @property311 @property
312 def binaries(self):312 def binaries(self):
313 """Return set of binary package names listed."""313 """Return set of binary package names listed."""
314 return set(self._dict['Binary'].strip().split())314 return set(self._dict.get('Binary', '').strip().split())
315315
316 @property316 @property
317 def converted_urgency(self):317 def converted_urgency(self):
318318
=== added directory 'lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field'
=== added file 'lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1.diff.gz'
319Binary files lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1.diff.gz 1970-01-01 00:00:00 +0000 and lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1.diff.gz 2019-02-19 16:55:44 +0000 differ319Binary files lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1.diff.gz 1970-01-01 00:00:00 +0000 and lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1.diff.gz 2019-02-19 16:55:44 +0000 differ
=== added file 'lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1.dsc'
--- lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1.dsc 1970-01-01 00:00:00 +0000
+++ lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1.dsc 2019-02-19 16:55:44 +0000
@@ -0,0 +1,21 @@
1-----BEGIN PGP SIGNED MESSAGE-----
2Hash: SHA1
3
4Format: 1.0
5Source: bar
6Version: 1.0-1
7Binary: bar
8Maintainer: Launchpad team <launchpad@lists.canonical.com>
9Architecture: any
10Standards-Version: 3.6.2
11Files:
12 fc1464e5985b962a042d5354452f361d 164 bar_1.0.orig.tar.gz
13 1e35b810764f140af9616de8274e6e73 537 bar_1.0-1.diff.gz
14
15-----BEGIN PGP SIGNATURE-----
16Version: GnuPG v1.4.3 (GNU/Linux)
17
18iD8DBQFFt7Cojn63CGxkqMURAo6FAJ9ZUagUNtYpmZrqFwL6LXDKOUSOPwCdFqPa
19BdrMeT+0Hg+yMS69uO+qJRI=
20=mjFU
21-----END PGP SIGNATURE-----
022
=== added file 'lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1_source.changes'
--- lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1_source.changes 1970-01-01 00:00:00 +0000
+++ lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0-1_source.changes 2019-02-19 16:55:44 +0000
@@ -0,0 +1,27 @@
1-----BEGIN PGP SIGNED MESSAGE-----
2Hash: SHA1
3
4Format: 1.7
5Date: Thu, 16 Feb 2006 15:34:09 +0000
6Source: bar
7Architecture: source
8Version: 1.0-1
9Distribution: breezy
10Urgency: low
11Maintainer: Launchpad team <launchpad@lists.canonical.com>
12Changed-By: Daniel Silverstone <daniel.silverstone@canonical.com>
13Changes:
14 bar (1.0-1) breezy; urgency=low
15 .
16 * Initial version
17Files:
18 5d533778b698edc1a122098a98c8490e 512 devel optional bar_1.0-1.dsc
19 fc1464e5985b962a042d5354452f361d 164 devel optional bar_1.0.orig.tar.gz
20 1e35b810764f140af9616de8274e6e73 537 devel optional bar_1.0-1.diff.gz
21
22-----BEGIN PGP SIGNATURE-----
23
24iF0EARECAB0WIQQ0DKO7Jw4nFsnuC3aOfrcIbGSoxQUCXGws2QAKCRCOfrcIbGSo
25xcvwAJ4qSgGJOxs95sQMqWnBtEqJvmVVlgCfQ6Tdctq1YPjdsPEHDtqOdAMCvcc=
26=iQ/q
27-----END PGP SIGNATURE-----
028
=== added file 'lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0.orig.tar.gz'
1Binary files lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0.orig.tar.gz 1970-01-01 00:00:00 +0000 and lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0.orig.tar.gz 2019-02-19 16:55:44 +0000 differ29Binary files lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0.orig.tar.gz 1970-01-01 00:00:00 +0000 and lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_no_binary_field/bar_1.0.orig.tar.gz 2019-02-19 16:55:44 +0000 differ
=== modified file 'lib/lp/archiveuploader/tests/test_uploadprocessor.py'
--- lib/lp/archiveuploader/tests/test_uploadprocessor.py 2018-05-03 15:10:39 +0000
+++ lib/lp/archiveuploader/tests/test_uploadprocessor.py 2019-02-19 16:55:44 +0000
@@ -1486,6 +1486,35 @@
1486 "Expected one 'bar' item in the queue, actually got %d."1486 "Expected one 'bar' item in the queue, actually got %d."
1487 % queue_items.count())1487 % queue_items.count())
14881488
1489 def testSourceUploadWithoutBinaryField(self):
1490 """Source uploads may omit the Binary field.
1491
1492 dpkg >= 1.19.3 omits the Binary field (as well as Description) from
1493 sourceful .changes files, so don't require it.
1494 """
1495 self.setupBreezy()
1496 self.layer.txn.commit()
1497 self.options.context = 'absolutely-anything'
1498 uploadprocessor = self.getUploadProcessor(self.layer.txn)
1499
1500 upload_dir = self.queueUpload("bar_1.0-1_no_binary_field")
1501 self.processUpload(uploadprocessor, upload_dir)
1502 [msg] = pop_notifications()
1503 self.assertNotIn(
1504 "rejected", str(msg), "Failed to upload bar source:\n%s" % msg)
1505 spph = self.publishPackage("bar", "1.0-1")
1506
1507 self.assertEqual(
1508 sorted((sprf.libraryfile.filename, sprf.filetype)
1509 for sprf in spph.sourcepackagerelease.files),
1510 [('bar_1.0-1.diff.gz',
1511 SourcePackageFileType.DIFF),
1512 ('bar_1.0-1.dsc',
1513 SourcePackageFileType.DSC),
1514 ('bar_1.0.orig.tar.gz',
1515 SourcePackageFileType.ORIG_TARBALL),
1516 ])
1517
1489 def testUploadResultingInNoBuilds(self):1518 def testUploadResultingInNoBuilds(self):
1490 """Source uploads resulting in no builds.1519 """Source uploads resulting in no builds.
14911520