diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2003-01-23 18:02:20 (GMT) |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2003-01-23 18:02:20 (GMT) |
commit | ba60319a78ed6be5a57d5288e0e131c4bc6c8cf8 (patch) | |
tree | 9c62634d049527c3ab75363978b18582fab01d3d /Lib/test/test_httplib.py | |
parent | b1049e8eca13f6e2634a8eba119f7c5ce5a6b1aa (diff) | |
download | cpython-ba60319a78ed6be5a57d5288e0e131c4bc6c8cf8.zip cpython-ba60319a78ed6be5a57d5288e0e131c4bc6c8cf8.tar.gz cpython-ba60319a78ed6be5a57d5288e0e131c4bc6c8cf8.tar.bz2 |
Fix for SF bug 661340: test_httplib fails on the mac.
The test no longer produces output with \r\n in it.
Diffstat (limited to 'Lib/test/test_httplib.py')
-rw-r--r-- | Lib/test/test_httplib.py | 105 |
1 files changed, 64 insertions, 41 deletions
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index 4d8dbc8..8764455 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -11,48 +11,71 @@ class FakeSocket: raise httplib.UnimplementedFileMode() return StringIO.StringIO(self.text) -# Test HTTP status lines - -body = "HTTP/1.1 200 Ok\r\n\r\nText" -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" -sock = FakeSocket(body) -resp = httplib.HTTPResponse(sock, 1) -try: - resp.begin() -except httplib.BadStatusLine: - print "BadStatusLine raised as expected" -else: - print "Expect BadStatusLine" +# 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. -# Check invalid host_port +import sys -for hp in ("www.python.org:abc", "www.python.org:"): +def test(): + buf = StringIO.StringIO() + _stdout = sys.stdout try: - h = httplib.HTTP(hp) - except httplib.InvalidURL: - print "InvalidURL raised as expected" + 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() + 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" else: - print "Expect InvalidURL" - -# test response with multiple message headers with the same field name. -text = ('HTTP/1.1 200 OK\r\n' - 'Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"\r\n' - 'Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1";' - ' Path="/acme"\r\n' - '\r\n' - 'No body\r\n') -hdr = ('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"' - ', ' - 'Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"') -s = FakeSocket(text) -r = httplib.HTTPResponse(s, 1) -r.begin() -cookies = r.getheader("Set-Cookie") -if cookies != hdr: - raise AssertionError, "multiple headers not combined properly" + print "Expect BadStatusLine" + + # Check invalid host_port + + for hp in ("www.python.org:abc", "www.python.org:"): + try: + h = httplib.HTTP(hp) + except httplib.InvalidURL: + print "InvalidURL raised as expected" + else: + print "Expect InvalidURL" + + # test response with multiple message headers with the same field name. + text = ('HTTP/1.1 200 OK\r\n' + 'Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"\r\n' + 'Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1";' + ' Path="/acme"\r\n' + '\r\n' + 'No body\r\n') + hdr = ('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"' + ', ' + 'Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"') + s = FakeSocket(text) + r = httplib.HTTPResponse(s, 1) + r.begin() + cookies = r.getheader("Set-Cookie") + if cookies != hdr: + raise AssertionError, "multiple headers not combined properly" + +test() |