Index: Lib/test/test_urllib2_localnet.py =================================================================== --- Lib/test/test_urllib2_localnet.py (revision 69418) +++ Lib/test/test_urllib2_localnet.py (working copy) @@ -310,7 +310,10 @@ self.send_response(response_code) for (header, value) in headers: - self.send_header(header, value % self.port) + if "%" in value: + self.send_header(header, value % self.port) + else: + self.send_header(header, value) if body: self.send_header("Content-type", "text/plain") self.end_headers() @@ -342,7 +345,10 @@ def urlopen(self, url, data=None): f = urllib.request.urlopen(url, data) - result = f.read() + try: + result = f.read() + except http.client.IncompleteRead as iread: + result = iread.partial f.close() return result @@ -370,6 +376,19 @@ self.assertEquals(data, expected_response) self.assertEquals(handler.requests, ["/", "/somewhere_else"]) + def test_chunked(self): + expected_response = b"hello world" + chunked_start = ( + b'a\r\n' + b'hello worl\r\n' + b'1\r\n' + b'd\r\n' + ) + response = [(200, [("Transfer-Encoding", "chunked")], chunked_start)] + handler = self.start_server(response) + data = self.urlopen("http://localhost:%s/" % handler.port) + self.assertEquals(data, expected_response) + def test_404(self): expected_response = b"Bad bad bad..." handler = self.start_server([(404, [], expected_response)])