Merge lp:~blake-rouse/simplestreams/fix-1523682 into lp:~smoser/simplestreams/trunk

Proposed by Blake Rouse
Status: Merged
Merged at revision: 419
Proposed branch: lp:~blake-rouse/simplestreams/fix-1523682
Merge into: lp:~smoser/simplestreams/trunk
Diff against target: 70 lines (+39/-3)
2 files modified
simplestreams/contentsource.py (+6/-3)
tests/unittests/test_contentsource.py (+33/-0)
To merge this branch: bzr merge lp:~blake-rouse/simplestreams/fix-1523682
Reviewer Review Type Date Requested Status
Scott Moser Pending
Review via email: mp+279821@code.launchpad.net

Commit message

Fix UrlContentSource and FdContentSource read method to work with python3.

To post a comment you must log in.
419. By Blake Rouse

Put back fix.

420. By Blake Rouse

Handle None.

421. By Blake Rouse

Fix divereged.

422. By Blake Rouse

RequestsUrlReader does not handle read(None) correctly in python3.

423. By Blake Rouse

Fix the issue and add tests to prove it.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'simplestreams/contentsource.py'
2--- simplestreams/contentsource.py 2015-09-22 20:10:39 +0000
3+++ simplestreams/contentsource.py 2015-12-07 22:43:32 +0000
4@@ -140,7 +140,12 @@
5 def read(self, size=-1):
6 if self.fd is None:
7 self.open()
8-
9+ if sys.version_info > (3, 0):
10+ if size is not None and size < 0:
11+ size = None
12+ else:
13+ if size is None:
14+ size = -1
15 return self.fd.read(size)
16
17 def set_start_pos(self, offset):
18@@ -382,8 +387,6 @@
19 self._read = self.read_raw
20
21 def read(self, size=-1):
22- if size < 0:
23- size = None
24 return self._read(size)
25
26 def read_compressed(self, size=None):
27
28=== modified file 'tests/unittests/test_contentsource.py'
29--- tests/unittests/test_contentsource.py 2014-07-15 21:35:36 +0000
30+++ tests/unittests/test_contentsource.py 2015-12-07 22:43:32 +0000
31@@ -33,6 +33,39 @@
32 self.process.kill() # pylint: disable=E1101
33
34
35+class TestUrlContentSource(TestCase):
36+
37+ def setUp(self):
38+ self.source = tempfile.mkdtemp()
39+ with open(join(self.source, 'foo'), 'wb') as f:
40+ f.write(b'hello world\n')
41+
42+ def tearDown(self):
43+ shutil.rmtree(self.source)
44+
45+ def test_url_read_handles_None(self):
46+ with RandomPortServer(self.source) as server:
47+ loc = 'http://localhost:%d/foo' % server.port
48+ scs = contentsource.UrlContentSource(loc)
49+ scs.read(None)
50+
51+ def test_url_read_handles_negative_size(self):
52+ with RandomPortServer(self.source) as server:
53+ loc = 'http://localhost:%d/foo' % server.port
54+ scs = contentsource.UrlContentSource(loc)
55+ scs.read(-1)
56+
57+ def test_fd_read_handles_None(self):
58+ loc = 'file://%s/foo' % self.source
59+ scs = contentsource.UrlContentSource(loc)
60+ scs.read(None)
61+
62+ def test_fd_read_handles_negative_size(self):
63+ loc = 'file://%s/foo' % self.source
64+ scs = contentsource.UrlContentSource(loc)
65+ scs.read(-1)
66+
67+
68 class TestResume(TestCase):
69 def setUp(self):
70 self.target = tempfile.mkdtemp()

Subscribers

People subscribed via source and target branches

to all changes: