summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2007-08-28 03:11:34 (GMT)
committerGuido van Rossum <guido@python.org>2007-08-28 03:11:34 (GMT)
commita1a68521db007c55668ed7d7c31fb629804105a8 (patch)
tree09425841f2504c5e02fca31ab2a0fc1ee52cc67b /Lib
parent0cb431c071ce2167f262916bb467ec8cb9ea097a (diff)
downloadcpython-a1a68521db007c55668ed7d7c31fb629804105a8.zip
cpython-a1a68521db007c55668ed7d7c31fb629804105a8.tar.gz
cpython-a1a68521db007c55668ed7d7c31fb629804105a8.tar.bz2
Make test_cgi pass. I changed the internal file created by make_file()
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.
Diffstat (limited to 'Lib')
-rwxr-xr-xLib/cgi.py20
-rw-r--r--Lib/test/test_cgi.py4
2 files changed, 11 insertions, 13 deletions
diff --git a/Lib/cgi.py b/Lib/cgi.py
index ab126d5..6f76cb5 100755
--- a/Lib/cgi.py
+++ b/Lib/cgi.py
@@ -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:
diff --git a/Lib/test/test_cgi.py b/Lib/test/test_cgi.py
index 9b3df21..439982b 100644
--- a/Lib/test/test_cgi.py
+++ b/Lib/test/test_cgi.py
@@ -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)