Fix for SF bug 661340: test_httplib fails on the mac.
authorJeremy Hylton <jeremy@alum.mit.edu>
Thu, 23 Jan 2003 18:02:20 +0000 (18:02 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Thu, 23 Jan 2003 18:02:20 +0000 (18:02 +0000)
The test no longer produces output with \r\n in it.

Lib/test/output/test_httplib
Lib/test/test_httplib.py

index d9b3fa1b4af6be8e5b065fe294dbaf075f35e4f0..811e68000df14c9960053ec9fc4531edf7173ed4 100644 (file)
@@ -8,3 +8,4 @@ InvalidURL raised as expected
 reply: 'HTTP/1.1 200 OK\r\n'
 header: Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"
 header: Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"
+
index 4d8dbc8997645c4fe3c62d32a8f088ce81cff228..8764455ccfd07f1583fded1c5c6ccd4080d3798c 100644 (file)
@@ -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()