[Python-checkins] r83833 - python/branches/py3k/Lib/test/test_urllib2_localnet.py

florent.xicluna python-checkins at python.org
Sun Aug 8 18:25:28 CEST 2010


Author: florent.xicluna
Date: Sun Aug  8 18:25:27 2010
New Revision: 83833

Log:
Add test case for the HTTPResponse being an iterable.  Follow-up of issue #4608.


Modified:
   python/branches/py3k/Lib/test/test_urllib2_localnet.py

Modified: python/branches/py3k/Lib/test/test_urllib2_localnet.py
==============================================================================
--- python/branches/py3k/Lib/test/test_urllib2_localnet.py	(original)
+++ python/branches/py3k/Lib/test/test_urllib2_localnet.py	Sun Aug  8 18:25:27 2010
@@ -308,8 +308,9 @@
 
         def do_GET(self):
             body = self.send_head()
-            if body:
-                self.wfile.write(body)
+            while body:
+                done = self.wfile.write(body)
+                body = body[done:]
 
         def do_POST(self):
             content_length = self.headers["Content-Length"]
@@ -501,6 +502,25 @@
                           urllib.request.urlopen,
                           "http://sadflkjsasf.i.nvali.d./")
 
+    def test_iteration(self):
+        expected_response = b"pycon 2008..."
+        handler = self.start_server([(200, [], expected_response)])
+        data = urllib.request.urlopen("http://localhost:%s" % handler.port)
+        for line in data:
+            self.assertEqual(line, expected_response)
+
+    def test_line_iteration(self):
+        lines = [b"We\n", b"got\n", b"here\n", b"verylong " * 8192 + b"\n"]
+        expected_response = b"".join(lines)
+        handler = self.start_server([(200, [], expected_response)])
+        data = urllib.request.urlopen("http://localhost:%s" % handler.port)
+        for index, line in enumerate(data):
+            self.assertEqual(line, lines[index],
+                             "Fetched line number %s doesn't match expected:\n"
+                             "    Expected length was %s, got %s" %
+                             (index, len(lines[index]), len(line)))
+        self.assertEqual(index + 1, len(lines))
+
 def test_main():
     support.run_unittest(ProxyAuthTests, TestUrlopen)
 


More information about the Python-checkins mailing list