[Python-checkins] r70109 - in python/branches/py3k: Lib/http/client.py Lib/test/test_httplib.py Misc/ACKS
benjamin.peterson
python-checkins at python.org
Mon Mar 2 23:50:25 CET 2009
Author: benjamin.peterson
Date: Mon Mar 2 23:50:25 2009
New Revision: 70109
Log:
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
........
Modified:
python/branches/py3k/ (props changed)
python/branches/py3k/Lib/http/client.py
python/branches/py3k/Lib/test/test_httplib.py
python/branches/py3k/Misc/ACKS
Modified: python/branches/py3k/Lib/http/client.py
==============================================================================
--- python/branches/py3k/Lib/http/client.py (original)
+++ python/branches/py3k/Lib/http/client.py Mon Mar 2 23:50:25 2009
@@ -578,7 +578,7 @@
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 @@
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
Modified: python/branches/py3k/Lib/test/test_httplib.py
==============================================================================
--- python/branches/py3k/Lib/test/test_httplib.py (original)
+++ python/branches/py3k/Lib/test/test_httplib.py Mon Mar 2 23:50:25 2009
@@ -181,6 +181,8 @@
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 @@
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):
Modified: python/branches/py3k/Misc/ACKS
==============================================================================
--- python/branches/py3k/Misc/ACKS (original)
+++ python/branches/py3k/Misc/ACKS Mon Mar 2 23:50:25 2009
@@ -767,6 +767,7 @@
Blake Winton
Jean-Claude Wippler
Lars Wirzenius
+Chris Withers
Stefan Witzel
David Wolever
Klaus-Juergen Wolf
More information about the Python-checkins
mailing list