Merge ~cjwatson/launchpad:das-setchroot-bytes into launchpad:master

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: c52abaf508e99f9fc4982f89f2804269049ebfe6
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~cjwatson/launchpad:das-setchroot-bytes
Merge into: launchpad:master
Diff against target: 110 lines (+13/-13)
2 files modified
lib/lp/soyuz/browser/tests/test_distroarchseries_webservice.py (+10/-10)
lib/lp/soyuz/model/distroarchseries.py (+3/-3)
Reviewer Review Type Date Requested Status
William Grant code Approve
Review via email: mp+379666@code.launchpad.net

Commit message

Make DistroArchSeries.setChroot take data as bytes

Description of the change

More explicit, and needed for Python 3.

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
1diff --git a/lib/lp/soyuz/browser/tests/test_distroarchseries_webservice.py b/lib/lp/soyuz/browser/tests/test_distroarchseries_webservice.py
2index 74290a4..32cd64e 100644
3--- a/lib/lp/soyuz/browser/tests/test_distroarchseries_webservice.py
4+++ b/lib/lp/soyuz/browser/tests/test_distroarchseries_webservice.py
5@@ -91,7 +91,7 @@ class TestDistroArchSeriesWebservice(TestCaseWithFactory):
6 webservice = launchpadlib_for("testing", user, version='devel')
7 ws_das = ws_object(webservice, das)
8 self.assertRaises(
9- Unauthorized, ws_das.setChroot, data='xyz', sha1sum='0')
10+ Unauthorized, ws_das.setChroot, data=b'xyz', sha1sum='0')
11 self.assertRaises(Unauthorized, ws_das.removeChroot)
12
13 def test_setChroot_wrong_sha1sum(self):
14@@ -101,7 +101,7 @@ class TestDistroArchSeriesWebservice(TestCaseWithFactory):
15 webservice = launchpadlib_for("testing", user)
16 ws_das = ws_object(webservice, das)
17 e = self.assertRaises(
18- BadRequest, ws_das.setChroot, data='zyx', sha1sum='x')
19+ BadRequest, ws_das.setChroot, data=b'zyx', sha1sum='x')
20 self.assertEqual("Chroot upload checksums do not match", e.content)
21
22 def test_setChroot_missing_trailing_cr(self):
23@@ -117,7 +117,7 @@ class TestDistroArchSeriesWebservice(TestCaseWithFactory):
24 ws_das = ws_object(webservice, das)
25 sha1 = '95e0c0e09be59e04eb0e312e5daa11a2a830e526'
26 ws_das.setChroot(
27- data='foo\r', sha1sum='95e0c0e09be59e04eb0e312e5daa11a2a830e526')
28+ data=b'foo\r', sha1sum='95e0c0e09be59e04eb0e312e5daa11a2a830e526')
29 self.assertEqual(sha1, das.getChroot().content.sha1)
30
31 def test_setChroot_removeChroot(self):
32@@ -129,11 +129,11 @@ class TestDistroArchSeriesWebservice(TestCaseWithFactory):
33 webservice = launchpadlib_for("testing", user)
34 ws_das = ws_object(webservice, das)
35 sha1 = hashlib.sha1('abcxyz').hexdigest()
36- ws_das.setChroot(data='abcxyz', sha1sum=sha1)
37+ ws_das.setChroot(data=b'abcxyz', sha1sum=sha1)
38 self.assertTrue(ws_das.chroot_url.endswith(expected_file))
39 ws_das.removeChroot()
40 self.assertIsNone(ws_das.chroot_url)
41- ws_das.setChroot(data='abcxyz', sha1sum=sha1)
42+ ws_das.setChroot(data=b'abcxyz', sha1sum=sha1)
43 self.assertTrue(ws_das.chroot_url.endswith(expected_file))
44
45 def test_setChroot_removeChroot_pocket(self):
46@@ -142,9 +142,9 @@ class TestDistroArchSeriesWebservice(TestCaseWithFactory):
47 webservice = launchpadlib_for("testing", user)
48 ws_das = ws_object(webservice, das)
49 sha1_1 = hashlib.sha1('abcxyz').hexdigest()
50- ws_das.setChroot(data='abcxyz', sha1sum=sha1_1)
51+ ws_das.setChroot(data=b'abcxyz', sha1sum=sha1_1)
52 sha1_2 = hashlib.sha1('123456').hexdigest()
53- ws_das.setChroot(data='123456', sha1sum=sha1_2, pocket='Updates')
54+ ws_das.setChroot(data=b'123456', sha1sum=sha1_2, pocket='Updates')
55 release_chroot = das.getChroot(pocket=PackagePublishingPocket.RELEASE)
56 self.assertEqual(sha1_1, release_chroot.content.sha1)
57 updates_chroot = das.getChroot(pocket=PackagePublishingPocket.UPDATES)
58@@ -165,7 +165,7 @@ class TestDistroArchSeriesWebservice(TestCaseWithFactory):
59 release_chroot_url, ws_das.getChrootURL(pocket='Updates'))
60 self.assertEqual(
61 release_chroot_url, ws_das.getChrootURL(pocket='Proposed'))
62- ws_das.setChroot(data='123456', sha1sum=sha1_2, pocket='Updates')
63+ ws_das.setChroot(data=b'123456', sha1sum=sha1_2, pocket='Updates')
64 updates_chroot = das.getChroot(pocket=PackagePublishingPocket.UPDATES)
65 self.assertEqual(sha1_2, updates_chroot.content.sha1)
66 with person_logged_in(user):
67@@ -183,9 +183,9 @@ class TestDistroArchSeriesWebservice(TestCaseWithFactory):
68 webservice = launchpadlib_for("testing", user)
69 ws_das = ws_object(webservice, das)
70 sha1_1 = hashlib.sha1('abcxyz').hexdigest()
71- ws_das.setChroot(data='abcxyz', sha1sum=sha1_1)
72+ ws_das.setChroot(data=b'abcxyz', sha1sum=sha1_1)
73 sha1_2 = hashlib.sha1('123456').hexdigest()
74- ws_das.setChroot(data='123456', sha1sum=sha1_2, image_type='LXD image')
75+ ws_das.setChroot(data=b'123456', sha1sum=sha1_2, image_type='LXD image')
76 chroot_image = das.getChroot(image_type=BuildBaseImageType.CHROOT)
77 self.assertEqual(sha1_1, chroot_image.content.sha1)
78 lxd_image = das.getChroot(image_type=BuildBaseImageType.LXD)
79diff --git a/lib/lp/soyuz/model/distroarchseries.py b/lib/lp/soyuz/model/distroarchseries.py
80index df0543b..aedbe7c 100644
81--- a/lib/lp/soyuz/model/distroarchseries.py
82+++ b/lib/lp/soyuz/model/distroarchseries.py
83@@ -7,8 +7,8 @@ __all__ = [
84 'PocketChroot'
85 ]
86
87-from cStringIO import StringIO
88 import hashlib
89+from io import BytesIO
90
91 from sqlobject import (
92 BoolCol,
93@@ -204,7 +204,7 @@ class DistroArchSeries(SQLBase):
94 # the file content from the request, since the passed in one has been
95 # wrongly encoded.
96 data = get_raw_form_value_from_current_request(data, 'data')
97- if isinstance(data, str):
98+ if isinstance(data, bytes):
99 filecontent = data
100 else:
101 filecontent = data.read()
102@@ -232,7 +232,7 @@ class DistroArchSeries(SQLBase):
103 self.distroseries.distribution.name, self.distroseries.name,
104 self.architecturetag)
105 lfa = getUtility(ILibraryFileAliasSet).create(
106- name=filename, size=len(filecontent), file=StringIO(filecontent),
107+ name=filename, size=len(filecontent), file=BytesIO(filecontent),
108 contentType='application/octet-stream')
109 if lfa.content.sha1 != sha1sum:
110 raise InvalidChrootUploaded("Chroot upload checksums do not match")

Subscribers

People subscribed via source and target branches

to status/vote changes: