summaryrefslogtreecommitdiff
path: root/python/subunit/tests
diff options
context:
space:
mode:
authorMartin Pool <mbp@canonical.com>2011-01-11 22:49:26 -0600
committerMartin Pool <mbp@canonical.com>2011-01-11 22:49:26 -0600
commit0de847bb324e3bf3345c355f899c939180ecb406 (patch)
tree0ba5e6f113b6e508a430fc99721ae146355bf484 /python/subunit/tests
parent729967637c1ead8042bca8e1ece3906f6f6ed6e7 (diff)
downloadsubunit-git-0de847bb324e3bf3345c355f899c939180ecb406.tar.gz
Default to (more) strict decoding of chunked parts
Diffstat (limited to 'python/subunit/tests')
-rw-r--r--python/subunit/tests/test_chunked.py20
1 files changed, 18 insertions, 2 deletions
diff --git a/python/subunit/tests/test_chunked.py b/python/subunit/tests/test_chunked.py
index 681af6b..4fb99bf 100644
--- a/python/subunit/tests/test_chunked.py
+++ b/python/subunit/tests/test_chunked.py
@@ -87,13 +87,29 @@ class TestDecode(unittest.TestCase):
self.assertEqual('', self.decoder.write('0\r\n'))
self.assertEqual('1' * 65536 + '2' * 65536, self.output.getvalue())
- def test_decode_newline(self):
+ def test_decode_newline_nonstrict(self):
"""Tolerate chunk markers with no cr character."""
+ # From <http://pad.lv/505078>
+ self.decoder = subunit.chunked.Decoder(self.output, strict=False)
self.assertEqual(None, self.decoder.write('a\n'))
self.assertEqual(None, self.decoder.write('abcdeabcde'))
- self.assertEqual(None, self.decoder.write('0\n'))
+ self.assertEqual('', self.decoder.write('0\n'))
self.assertEqual('abcdeabcde', self.output.getvalue())
+ def test_decode_strict_newline_only(self):
+ """Reject chunk markers with no cr character in strict mode."""
+ # From <http://pad.lv/505078>
+ self.assertRaises(ValueError,
+ self.decoder.write, 'a\n')
+
+ def test_decode_strict_multiple_crs(self):
+ self.assertRaises(ValueError,
+ self.decoder.write, 'a\r\r\n')
+
+ def test_decode_short_header(self):
+ self.assertRaises(ValueError,
+ self.decoder.write, '\n')
+
class TestEncode(unittest.TestCase):