mirror of https://github.com/python/cpython
Merged revisions 70107 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r70107 | benjamin.peterson | 2009-03-02 16:41:42 -0600 (Mon, 02 Mar 2009) | 1 line give httplib.IncompleteRead a more sane repr #4308 ........
This commit is contained in:
parent
a4f52b12d6
commit
6accb988a1
|
@ -578,7 +578,7 @@ class HTTPResponse(io.RawIOBase):
|
|||
while amt > 0:
|
||||
chunk = self.fp.read(min(amt, MAXAMOUNT))
|
||||
if not chunk:
|
||||
raise IncompleteRead(s)
|
||||
raise IncompleteRead(b''.join(s), amt)
|
||||
s.append(chunk)
|
||||
amt -= len(chunk)
|
||||
return b"".join(s)
|
||||
|
@ -1009,9 +1009,18 @@ class UnimplementedFileMode(HTTPException):
|
|||
pass
|
||||
|
||||
class IncompleteRead(HTTPException):
|
||||
def __init__(self, partial):
|
||||
def __init__(self, partial, expected=None):
|
||||
self.args = partial,
|
||||
self.partial = partial
|
||||
self.expected = expected
|
||||
def __repr__(self):
|
||||
if self.expected is not None:
|
||||
e = ', %i more expected' % self.expected
|
||||
else:
|
||||
e = ''
|
||||
return 'IncompleteRead(%i bytes read%s)' % (len(self.partial), e)
|
||||
def __str__(self):
|
||||
return repr(self)
|
||||
|
||||
class ImproperConnectionState(HTTPException):
|
||||
pass
|
||||
|
|
|
@ -181,6 +181,8 @@ class BasicTest(TestCase):
|
|||
resp.read()
|
||||
except httplib.IncompleteRead as i:
|
||||
self.assertEquals(i.partial, b'hello world')
|
||||
self.assertEqual(repr(i),'IncompleteRead(11 bytes read)')
|
||||
self.assertEqual(str(i),'IncompleteRead(11 bytes read)')
|
||||
else:
|
||||
self.fail('IncompleteRead expected')
|
||||
finally:
|
||||
|
@ -194,6 +196,23 @@ class BasicTest(TestCase):
|
|||
self.assertEquals(resp.read(), b'Hello\r\n')
|
||||
resp.close()
|
||||
|
||||
def test_incomplete_read(self):
|
||||
sock = FakeSocket('HTTP/1.1 200 OK\r\nContent-Length: 10\r\n\r\nHello\r\n')
|
||||
resp = httplib.HTTPResponse(sock, method="GET")
|
||||
resp.begin()
|
||||
try:
|
||||
resp.read()
|
||||
except httplib.IncompleteRead as i:
|
||||
self.assertEquals(i.partial, b'Hello\r\n')
|
||||
self.assertEqual(repr(i),
|
||||
"IncompleteRead(7 bytes read, 3 more expected)")
|
||||
self.assertEqual(str(i),
|
||||
"IncompleteRead(7 bytes read, 3 more expected)")
|
||||
else:
|
||||
self.fail('IncompleteRead expected')
|
||||
finally:
|
||||
resp.close()
|
||||
|
||||
|
||||
class OfflineTest(TestCase):
|
||||
def test_responses(self):
|
||||
|
|
Loading…
Reference in New Issue