diff options
author | Guido van Rossum <guido@python.org> | 2007-08-28 03:11:34 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-08-28 03:11:34 (GMT) |
commit | a1a68521db007c55668ed7d7c31fb629804105a8 (patch) | |
tree | 09425841f2504c5e02fca31ab2a0fc1ee52cc67b /Lib | |
parent | 0cb431c071ce2167f262916bb467ec8cb9ea097a (diff) | |
download | cpython-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-x | Lib/cgi.py | 20 | ||||
-rw-r--r-- | Lib/test/test_cgi.py | 4 |
2 files changed, 11 insertions, 13 deletions
@@ -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) |