diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2011-01-16 07:31:35 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2011-01-16 07:31:35 +0000 |
| commit | b4f0921463956215c9852398df2674262ac7548e (patch) | |
| tree | 5d25690e84ccc23ef459564258011353de4c63e8 /tests/regressiontests/requests | |
| parent | 1ca9e95d4e9ec5922ce6aee6c143006b6c551e48 (diff) | |
Fixed #15018 -- Corrected the handling of LimitedStream under one edge case involving size restricted buffers and newlines. Thanks to xjdrew for the report, and aaugustin for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15222 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/requests')
| -rw-r--r-- | tests/regressiontests/requests/tests.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/regressiontests/requests/tests.py b/tests/regressiontests/requests/tests.py index b1d80fe30e..a80ee9d571 100644 --- a/tests/regressiontests/requests/tests.py +++ b/tests/regressiontests/requests/tests.py @@ -102,15 +102,21 @@ class RequestsTests(unittest.TestCase): # Read all of a limited stream stream = LimitedStream(StringIO('test'), 2) self.assertEqual(stream.read(), 'te') + # Reading again returns nothing. + self.assertEqual(stream.read(), '') # Read a number of characters greater than the stream has to offer stream = LimitedStream(StringIO('test'), 2) self.assertEqual(stream.read(5), 'te') + # Reading again returns nothing. + self.assertEqual(stream.readline(5), '') # Read sequentially from a stream stream = LimitedStream(StringIO('12345678'), 8) self.assertEqual(stream.read(5), '12345') self.assertEqual(stream.read(5), '678') + # Reading again returns nothing. + self.assertEqual(stream.readline(5), '') # Read lines from a stream stream = LimitedStream(StringIO('1234\n5678\nabcd\nefgh\nijkl'), 24) @@ -129,6 +135,26 @@ class RequestsTests(unittest.TestCase): # Read everything else. self.assertEqual(stream.readline(), 'ijkl') + # Regression for #15018 + # If a stream contains a newline, but the provided length + # is less than the number of provided characters, the newline + # doesn't reset the available character count + stream = LimitedStream(StringIO('1234\nabcdef'), 9) + self.assertEqual(stream.readline(10), '1234\n') + self.assertEqual(stream.readline(3), 'abc') + # Now expire the available characters + self.assertEqual(stream.readline(3), 'd') + # Reading again returns nothing. + self.assertEqual(stream.readline(2), '') + + # Same test, but with read, not readline. + stream = LimitedStream(StringIO('1234\nabcdef'), 9) + self.assertEqual(stream.read(6), '1234\na') + self.assertEqual(stream.read(2), 'bc') + self.assertEqual(stream.read(2), 'd') + self.assertEqual(stream.read(2), '') + self.assertEqual(stream.read(), '') + def test_stream(self): request = WSGIRequest({'REQUEST_METHOD': 'POST', 'wsgi.input': StringIO('name=value')}) self.assertEqual(request.read(), 'name=value') |
