Merge lp:~gz/brz/py3_chunk_writer into lp:brz

Proposed by Martin Packman
Status: Merged
Approved by: Martin Packman
Approved revision: no longer in the source branch.
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~gz/brz/py3_chunk_writer
Merge into: lp:brz
Diff against target: 108 lines (+22/-22)
2 files modified
breezy/chunk_writer.py (+1/-1)
breezy/tests/test_chunk_writer.py (+21/-21)
To merge this branch: bzr merge lp:~gz/brz/py3_chunk_writer
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Review via email: mp+326643@code.launchpad.net

Commit message

Make chunk_writer Python 3 compatible

Description of the change

Simple enough changes, mostly annotating byte strings correctly.

To post a comment you must log in.
Revision history for this message
Jelmer Vernooij (jelmer) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/chunk_writer.py'
2--- breezy/chunk_writer.py 2011-12-19 13:23:58 +0000
3+++ breezy/chunk_writer.py 2017-07-02 13:51:52 +0000
4@@ -144,7 +144,7 @@
5 % (self.bytes_out_len, self.chunk_size))
6 nulls_needed = self.chunk_size - self.bytes_out_len
7 if nulls_needed:
8- self.bytes_list.append("\x00" * nulls_needed)
9+ self.bytes_list.append(b"\x00" * nulls_needed)
10 return self.bytes_list, self.unused_bytes, nulls_needed
11
12 def set_optimize(self, for_size=True):
13
14=== modified file 'breezy/tests/test_chunk_writer.py'
15--- breezy/tests/test_chunk_writer.py 2017-06-04 18:09:30 +0000
16+++ breezy/tests/test_chunk_writer.py 2017-07-02 13:51:52 +0000
17@@ -26,15 +26,15 @@
18 class TestWriter(TestCaseWithTransport):
19
20 def check_chunk(self, bytes_list, size):
21- bytes = ''.join(bytes_list)
22- self.assertEqual(size, len(bytes))
23- return zlib.decompress(bytes)
24+ data = b''.join(bytes_list)
25+ self.assertEqual(size, len(data))
26+ return zlib.decompress(data)
27
28 def test_chunk_writer_empty(self):
29 writer = chunk_writer.ChunkWriter(4096)
30 bytes_list, unused, padding = writer.finish()
31 node_bytes = self.check_chunk(bytes_list, 4096)
32- self.assertEqual("", node_bytes)
33+ self.assertEqual(b"", node_bytes)
34 self.assertEqual(None, unused)
35 # Only a zlib header.
36 self.assertEqual(4088, padding)
37@@ -59,22 +59,27 @@
38
39 def test_some_data(self):
40 writer = chunk_writer.ChunkWriter(4096)
41- writer.write("foo bar baz quux\n")
42+ writer.write(b"foo bar baz quux\n")
43 bytes_list, unused, padding = writer.finish()
44 node_bytes = self.check_chunk(bytes_list, 4096)
45- self.assertEqual("foo bar baz quux\n", node_bytes)
46+ self.assertEqual(b"foo bar baz quux\n", node_bytes)
47 self.assertEqual(None, unused)
48 # More than just the header..
49 self.assertEqual(4073, padding)
50
51+ @staticmethod
52+ def _make_lines():
53+ lines = []
54+ for group in range(48):
55+ offset = group * 50
56+ numbers = list(range(offset, offset + 50))
57+ # Create a line with this group
58+ lines.append(b''.join(b'%d' % n for n in numbers) + b'\n')
59+ return lines
60+
61 def test_too_much_data_does_not_exceed_size(self):
62 # Generate enough data to exceed 4K
63- lines = []
64- for group in range(48):
65- offset = group * 50
66- numbers = list(range(offset, offset + 50))
67- # Create a line with this group
68- lines.append(''.join(map(str, numbers)) + '\n')
69+ lines = self._make_lines()
70 writer = chunk_writer.ChunkWriter(4096)
71 for idx, line in enumerate(lines):
72 if writer.write(line):
73@@ -83,19 +88,14 @@
74 bytes_list, unused, _ = writer.finish()
75 node_bytes = self.check_chunk(bytes_list, 4096)
76 # the first 46 lines should have been added
77- expected_bytes = ''.join(lines[:46])
78+ expected_bytes = b''.join(lines[:46])
79 self.assertEqualDiff(expected_bytes, node_bytes)
80 # And the line that failed should have been saved for us
81 self.assertEqual(lines[46], unused)
82
83 def test_too_much_data_preserves_reserve_space(self):
84 # Generate enough data to exceed 4K
85- lines = []
86- for group in range(48):
87- offset = group * 50
88- numbers = list(range(offset, offset + 50))
89- # Create a line with this group
90- lines.append(''.join(map(str, numbers)) + '\n')
91+ lines = self._make_lines()
92 writer = chunk_writer.ChunkWriter(4096, 256)
93 for idx, line in enumerate(lines):
94 if writer.write(line):
95@@ -103,11 +103,11 @@
96 break
97 else:
98 self.fail('We were able to write all lines')
99- self.assertFalse(writer.write("A"*256, reserved=True))
100+ self.assertFalse(writer.write(b"A"*256, reserved=True))
101 bytes_list, unused, _ = writer.finish()
102 node_bytes = self.check_chunk(bytes_list, 4096)
103 # the first 44 lines should have been added
104- expected_bytes = ''.join(lines[:44]) + "A"*256
105+ expected_bytes = b''.join(lines[:44]) + b"A"*256
106 self.assertEqualDiff(expected_bytes, node_bytes)
107 # And the line that failed should have been saved for us
108 self.assertEqual(lines[44], unused)

Subscribers

People subscribed via source and target branches