mirror of https://github.com/python/cpython
[NOTE: the original bug doesn't exist in py3k but this adds Kirk's tests and fixes
another bug in the process] Merged revisions 75134 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r75134 | antoine.pitrou | 2009-09-29 19:48:18 +0200 (mar., 29 sept. 2009) | 4 lines Issue #6790: Make it possible again to pass an `array.array` to `httplib.HTTPConnection.send`. Patch by Kirk McDonald. ........
This commit is contained in:
parent
8da3cac4a0
commit
ead1d62d32
|
@ -726,10 +726,17 @@ class HTTPConnection:
|
||||||
if self.debuglevel > 0:
|
if self.debuglevel > 0:
|
||||||
print("sendIng a read()able")
|
print("sendIng a read()able")
|
||||||
encode = False
|
encode = False
|
||||||
if "b" not in str.mode:
|
try:
|
||||||
encode = True
|
mode = str.mode
|
||||||
if self.debuglevel > 0:
|
except AttributeError:
|
||||||
print("encoding file using iso-8859-1")
|
# io.BytesIO and other file-like objects don't have a `mode`
|
||||||
|
# attribute.
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
if "b" not in mode:
|
||||||
|
encode = True
|
||||||
|
if self.debuglevel > 0:
|
||||||
|
print("encoding file using iso-8859-1")
|
||||||
while 1:
|
while 1:
|
||||||
data = str.read(blocksize)
|
data = str.read(blocksize)
|
||||||
if not data:
|
if not data:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import errno
|
import errno
|
||||||
from http import client
|
from http import client
|
||||||
import io
|
import io
|
||||||
|
import array
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
@ -174,6 +175,20 @@ class BasicTest(TestCase):
|
||||||
self.assertTrue(sock.data.startswith(expected), '%r != %r' %
|
self.assertTrue(sock.data.startswith(expected), '%r != %r' %
|
||||||
(sock.data[:len(expected)], expected))
|
(sock.data[:len(expected)], expected))
|
||||||
|
|
||||||
|
def test_send(self):
|
||||||
|
expected = b'this is a test this is only a test'
|
||||||
|
conn = client.HTTPConnection('example.com')
|
||||||
|
sock = FakeSocket(None)
|
||||||
|
conn.sock = sock
|
||||||
|
conn.send(expected)
|
||||||
|
self.assertEquals(expected, sock.data)
|
||||||
|
sock.data = b''
|
||||||
|
conn.send(array.array('b', expected))
|
||||||
|
self.assertEquals(expected, sock.data)
|
||||||
|
sock.data = b''
|
||||||
|
conn.send(io.BytesIO(expected))
|
||||||
|
self.assertEquals(expected, sock.data)
|
||||||
|
|
||||||
def test_chunked(self):
|
def test_chunked(self):
|
||||||
chunked_start = (
|
chunked_start = (
|
||||||
'HTTP/1.1 200 OK\r\n'
|
'HTTP/1.1 200 OK\r\n'
|
||||||
|
|
Loading…
Reference in New Issue