summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorRobert Collins <robertc@robertcollins.net>2009-10-13 15:52:06 +1100
committerRobert Collins <robertc@robertcollins.net>2009-10-13 15:52:06 +1100
commit236a0392e2d4ae550addac6bea02c7edb093c75f (patch)
treec96dcd1a1ef9be35f2d5d65ce92ff63261167a1c /python
parent129250bcfcdd915a1c8e71348efacdfda73d0594 (diff)
downloadsubunit-git-236a0392e2d4ae550addac6bea02c7edb093c75f.tar.gz
Small buffering bugs in chunked decoder.
Diffstat (limited to 'python')
-rw-r--r--python/subunit/chunked.py8
-rw-r--r--python/subunit/tests/test_chunked.py5
2 files changed, 10 insertions, 3 deletions
diff --git a/python/subunit/chunked.py b/python/subunit/chunked.py
index 89fb97b..82e4b0d 100644
--- a/python/subunit/chunked.py
+++ b/python/subunit/chunked.py
@@ -55,11 +55,13 @@ class Decoder(object):
def _read_body(self):
"""Pass body bytes to the output."""
while self.body_length and self.buffered_bytes:
- if self.body_length >= self.buffered_bytes[0]:
+ if self.body_length >= len(self.buffered_bytes[0]):
self.output.write(self.buffered_bytes[0])
self.body_length -= len(self.buffered_bytes[0])
- self.state = self._read_length
- # No more data.
+ del self.buffered_bytes[0]
+ # No more data available.
+ if not self.body_length:
+ self.state = self._read_length
else:
self.output.write(self.buffered_bytes[0][:self.body_length])
self.buffered_bytes[0] = \
diff --git a/python/subunit/tests/test_chunked.py b/python/subunit/tests/test_chunked.py
index 35de613..a24e31e 100644
--- a/python/subunit/tests/test_chunked.py
+++ b/python/subunit/tests/test_chunked.py
@@ -53,6 +53,11 @@ class TestDecode(unittest.TestCase):
self.assertEqual('', self.decoder.write('0\r\n'))
self.assertEqual('', self.output.getvalue())
+ def test_decode_serialised_form(self):
+ self.assertEqual(None, self.decoder.write("F\r\n"))
+ self.assertEqual(None, self.decoder.write("serialised\n"))
+ self.assertEqual('', self.decoder.write("form0\r\n"))
+
def test_decode_short(self):
self.assertEqual('', self.decoder.write('3\r\nabc0\r\n'))
self.assertEqual('abc', self.output.getvalue())