Fix for SF bug 661340: test_httplib fails on the mac.

The test no longer produces output with \r\n in it.
This commit is contained in:
Jeremy Hylton 2003-01-23 18:02:20 +00:00
parent b1049e8eca
commit ba60319a78
2 changed files with 65 additions and 41 deletions

View file

@ -8,3 +8,4 @@ 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"

View file

@ -11,28 +11,49 @@ class FakeSocket:
raise httplib.UnimplementedFileMode() raise httplib.UnimplementedFileMode()
return StringIO.StringIO(self.text) return StringIO.StringIO(self.text)
# Test HTTP status lines # 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
# and some platforms will strip them from the output file.
body = "HTTP/1.1 200 Ok\r\n\r\nText" import sys
sock = FakeSocket(body)
resp = httplib.HTTPResponse(sock, 1)
resp.begin()
print resp.read()
resp.close()
body = "HTTP/1.1 400.100 Not Ok\r\n\r\nText" def test():
sock = FakeSocket(body) buf = StringIO.StringIO()
resp = httplib.HTTPResponse(sock, 1) _stdout = sys.stdout
try: try:
sys.stdout = buf
_test()
finally:
sys.stdout = _stdout
# print individual lines with endings stripped
s = buf.getvalue()
for line in s.split("\n"):
print line.strip()
def _test():
# Test HTTP status lines
body = "HTTP/1.1 200 Ok\r\n\r\nText"
sock = FakeSocket(body)
resp = httplib.HTTPResponse(sock, 1)
resp.begin() resp.begin()
except httplib.BadStatusLine: print resp.read()
resp.close()
body = "HTTP/1.1 400.100 Not Ok\r\n\r\nText"
sock = FakeSocket(body)
resp = httplib.HTTPResponse(sock, 1)
try:
resp.begin()
except httplib.BadStatusLine:
print "BadStatusLine raised as expected" print "BadStatusLine raised as expected"
else: else:
print "Expect BadStatusLine" print "Expect BadStatusLine"
# Check invalid host_port # Check invalid host_port
for hp in ("www.python.org:abc", "www.python.org:"): for hp in ("www.python.org:abc", "www.python.org:"):
try: try:
h = httplib.HTTP(hp) h = httplib.HTTP(hp)
except httplib.InvalidURL: except httplib.InvalidURL:
@ -40,19 +61,21 @@ for hp in ("www.python.org:abc", "www.python.org:"):
else: else:
print "Expect InvalidURL" print "Expect InvalidURL"
# test response with multiple message headers with the same field name. # test response with multiple message headers with the same field name.
text = ('HTTP/1.1 200 OK\r\n' text = ('HTTP/1.1 200 OK\r\n'
'Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"\r\n' 'Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"\r\n'
'Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1";' 'Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1";'
' Path="/acme"\r\n' ' Path="/acme"\r\n'
'\r\n' '\r\n'
'No body\r\n') 'No body\r\n')
hdr = ('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"' hdr = ('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"'
', ' ', '
'Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"') 'Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"')
s = FakeSocket(text) s = FakeSocket(text)
r = httplib.HTTPResponse(s, 1) r = httplib.HTTPResponse(s, 1)
r.begin() r.begin()
cookies = r.getheader("Set-Cookie") cookies = r.getheader("Set-Cookie")
if cookies != hdr: if cookies != hdr:
raise AssertionError, "multiple headers not combined properly" raise AssertionError, "multiple headers not combined properly"
test()