Fix SF bug 764095: Don't use network in test_httplib.
This commit is contained in:
parent
a6b7d3411f
commit
121d34af19
|
@ -8,4 +8,6 @@ InvalidURL raised as expected
|
||||||
reply: 'HTTP/1.1 200 OK\r\n'
|
reply: 'HTTP/1.1 200 OK\r\n'
|
||||||
header: Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"
|
header: Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"
|
||||||
header: Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"
|
header: Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"
|
||||||
|
reply: 'HTTP/1.1 200 OK\r\n'
|
||||||
|
header: Content-Length: 14432
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,41 @@
|
||||||
from test.test_support import verify,verbose
|
|
||||||
import httplib
|
import httplib
|
||||||
import StringIO
|
import StringIO
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from test.test_support import verify,verbose
|
||||||
|
|
||||||
class FakeSocket:
|
class FakeSocket:
|
||||||
def __init__(self, text):
|
def __init__(self, text, fileclass=StringIO.StringIO):
|
||||||
self.text = text
|
self.text = text
|
||||||
|
self.fileclass = fileclass
|
||||||
|
|
||||||
def makefile(self, mode, bufsize=None):
|
def makefile(self, mode, bufsize=None):
|
||||||
if mode != 'r' and mode != 'rb':
|
if mode != 'r' and mode != 'rb':
|
||||||
raise httplib.UnimplementedFileMode()
|
raise httplib.UnimplementedFileMode()
|
||||||
return StringIO.StringIO(self.text)
|
return self.fileclass(self.text)
|
||||||
|
|
||||||
|
class NoEOFStringIO(StringIO.StringIO):
|
||||||
|
"""Like StringIO, but raises AssertionError on EOF.
|
||||||
|
|
||||||
|
This is used below to test that httplib doesn't try to read
|
||||||
|
more from the underlying file than it should.
|
||||||
|
"""
|
||||||
|
def read(self, n=-1):
|
||||||
|
data = StringIO.StringIO.read(self, n)
|
||||||
|
if data == '':
|
||||||
|
raise AssertionError('caller tried to read past EOF')
|
||||||
|
return data
|
||||||
|
|
||||||
|
def readline(self, length=None):
|
||||||
|
data = StringIO.StringIO.readline(self, length)
|
||||||
|
if data == '':
|
||||||
|
raise AssertionError('caller tried to read past EOF')
|
||||||
|
return data
|
||||||
|
|
||||||
# Collect output to a buffer so that we don't have to cope with line-ending
|
# Collect output to a buffer so that we don't have to cope with line-ending
|
||||||
# issues across platforms. Specifically, the headers will have \r\n pairs
|
# issues across platforms. Specifically, the headers will have \r\n pairs
|
||||||
# and some platforms will strip them from the output file.
|
# and some platforms will strip them from the output file.
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
def test():
|
def test():
|
||||||
buf = StringIO.StringIO()
|
buf = StringIO.StringIO()
|
||||||
_stdout = sys.stdout
|
_stdout = sys.stdout
|
||||||
|
@ -78,17 +97,17 @@ def _test():
|
||||||
if cookies != hdr:
|
if cookies != hdr:
|
||||||
raise AssertionError, "multiple headers not combined properly"
|
raise AssertionError, "multiple headers not combined properly"
|
||||||
|
|
||||||
# test that the library doesn't attempt to read any data
|
# Test that the library doesn't attempt to read any data
|
||||||
# from a head request
|
# from a HEAD request. (Tickles SF bug #622042.)
|
||||||
conn = httplib.HTTPConnection("www.python.org")
|
sock = FakeSocket(
|
||||||
conn.connect()
|
'HTTP/1.1 200 OK\r\n'
|
||||||
conn.request("HEAD", "/", headers={"Connection" : "keep-alive"})
|
'Content-Length: 14432\r\n'
|
||||||
resp = conn.getresponse()
|
'\r\n',
|
||||||
if resp.status != 200:
|
NoEOFStringIO)
|
||||||
raise AssertionError, "Expected status 200, got %d" % resp.status
|
resp = httplib.HTTPResponse(sock, 1, method="HEAD")
|
||||||
|
resp.begin()
|
||||||
if resp.read() != "":
|
if resp.read() != "":
|
||||||
raise AssertionError, "Did not expect response from HEAD request"
|
raise AssertionError, "Did not expect response from HEAD request"
|
||||||
resp.close()
|
resp.close()
|
||||||
conn.close()
|
|
||||||
|
|
||||||
test()
|
test()
|
||||||
|
|
Loading…
Reference in New Issue