]> granicus.if.org Git - python/commitdiff
Make test_cgi pass. I changed the internal file created by make_file()
authorGuido van Rossum <guido@python.org>
Tue, 28 Aug 2007 03:11:34 +0000 (03:11 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 28 Aug 2007 03:11:34 +0000 (03:11 +0000)
to be a text file.  (XXX It should use UTF-8 as the encoding.)
I also removed the unised 'binary' argument from the make_file() signature.

XXX I am under no illusion that this is now working; I're pretty sure
it would be more principled if it always read binary data.  But that's
for someone who actually cares about this module.

Lib/cgi.py
Lib/test/test_cgi.py

index ab126d53bd65e526123f2f8208a5a59bd123fa92..6f76cb5c241ee026e3624462272d37a2445186c0 100755 (executable)
@@ -662,7 +662,7 @@ class FieldStorage:
 
     def read_binary(self):
         """Internal: read binary data."""
-        self.file = self.make_file('b')
+        self.file = self.make_file()
         todo = self.length
         if todo >= 0:
             while todo > 0:
@@ -684,8 +684,9 @@ class FieldStorage:
     def __write(self, line):
         if self.__file is not None:
             if self.__file.tell() + len(line) > 1000:
-                self.file = self.make_file('')
-                self.file.write(self.__file.getvalue())
+                self.file = self.make_file()
+                data = self.__file.getvalue()
+                self.file.write(data)
                 self.__file = None
         self.file.write(line)
 
@@ -751,7 +752,7 @@ class FieldStorage:
                     break
             last_line_lfend = line.endswith('\n')
 
-    def make_file(self, binary=None):
+    def make_file(self):
         """Overridable: return a readable & writable file.
 
         The file will be used as follows:
@@ -759,8 +760,7 @@ class FieldStorage:
         - seek(0)
         - data is read from it
 
-        The 'binary' argument is unused -- the file is always opened
-        in binary mode.
+        The file is always opened in text mode.
 
         This version opens a temporary file for reading and writing,
         and immediately deletes (unlinks) it.  The trick (on Unix!) is
@@ -776,7 +776,7 @@ class FieldStorage:
 
         """
         import tempfile
-        return tempfile.TemporaryFile("w+b")
+        return tempfile.TemporaryFile("w+")
 
 
 
@@ -946,8 +946,7 @@ def print_exception(type=None, value=None, tb=None, limit=None):
 
 def print_environ(environ=os.environ):
     """Dump the shell environment as HTML."""
-    keys = environ.keys()
-    keys.sort()
+    keys = sorted(environ.keys())
     print()
     print("<H3>Shell Environment:</H3>")
     print("<DL>")
@@ -958,8 +957,7 @@ def print_environ(environ=os.environ):
 
 def print_form(form):
     """Dump the contents of a form as HTML."""
-    keys = form.keys()
-    keys.sort()
+    keys = sorted(form.keys())
     print()
     print("<H3>Form Contents:</H3>")
     if not keys:
index 9b3df216d7a5b01c14f13e686d0cb1db121e7755..439982bf45e65d7b11961d1ee237b4cae6efebe9 100644 (file)
@@ -231,8 +231,8 @@ class CgiTests(unittest.TestCase):
                     setattr(self, name, a)
                 return a
 
-        f = TestReadlineFile(tempfile.TemporaryFile())
-        f.write(b'x' * 256 * 1024)
+        f = TestReadlineFile(tempfile.TemporaryFile("w+"))
+        f.write('x' * 256 * 1024)
         f.seek(0)
         env = {'REQUEST_METHOD':'PUT'}
         fs = cgi.FieldStorage(fp=f, environ=env)