diff options
| author | Robert Collins <robertc@robertcollins.net> | 2009-10-13 15:52:06 +1100 |
|---|---|---|
| committer | Robert Collins <robertc@robertcollins.net> | 2009-10-13 15:52:06 +1100 |
| commit | 236a0392e2d4ae550addac6bea02c7edb093c75f (patch) | |
| tree | c96dcd1a1ef9be35f2d5d65ce92ff63261167a1c /python | |
| parent | 129250bcfcdd915a1c8e71348efacdfda73d0594 (diff) | |
| download | subunit-git-236a0392e2d4ae550addac6bea02c7edb093c75f.tar.gz | |
Small buffering bugs in chunked decoder.
Diffstat (limited to 'python')
| -rw-r--r-- | python/subunit/chunked.py | 8 | ||||
| -rw-r--r-- | python/subunit/tests/test_chunked.py | 5 |
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()) |
