--- C:/DOCUME~1/YPQA5222/LOCALS~1/Temp/test_cgi.py-revBASE.svn000.tmp.py jeu. janv. 13 09:37:21 2011 +++ C:/python-dev/test/test_cgi.py jeu. janv. 13 09:36:44 2011 @@ -4,7 +4,7 @@ import sys import tempfile import unittest -from io import StringIO +from io import StringIO, BytesIO class HackedSysModule: # The regression test will have real values in sys.argv, which @@ -14,7 +14,6 @@ cgi.sys = HackedSysModule() - class ComparableException: def __init__(self, err): self.err = err @@ -38,7 +37,7 @@ env['REQUEST_METHOD'] = 'GET' env['QUERY_STRING'] = buf elif method == "POST": - fp = StringIO(buf) + fp = BytesIO(buf.encode('latin-1')) # FieldStorage expects bytes env['REQUEST_METHOD'] = 'POST' env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded' env['CONTENT_LENGTH'] = str(len(buf)) @@ -106,9 +105,10 @@ return [(p[0], p[1][0]) for p in list] def gen_result(data, environ): - fake_stdin = StringIO(data) + fake_stdin = BytesIO(data.encode('latin-1')) #StringIO(data) fake_stdin.seek(0) - form = cgi.FieldStorage(fp=fake_stdin, environ=environ) + form = cgi.FieldStorage(fp=fake_stdin, environ=environ, + stream_encoding="latin-1") result = {} for k, v in dict(form).items(): @@ -122,9 +122,9 @@ for orig, expect in parse_strict_test_cases: # Test basic parsing d = do_test(orig, "GET") - self.assertEqual(d, expect, "Error parsing %s" % repr(orig)) + self.assertEqual(d, expect, "Error parsing %s method GET" % repr(orig)) d = do_test(orig, "POST") - self.assertEqual(d, expect, "Error parsing %s" % repr(orig)) + self.assertEqual(d, expect, "Error parsing %s method POST" % repr(orig)) env = {'QUERY_STRING': orig} fs = cgi.FieldStorage(environ=env) @@ -181,9 +181,9 @@ setattr(self, name, a) return a - f = TestReadlineFile(tempfile.TemporaryFile("w+")) + f = TestReadlineFile(tempfile.TemporaryFile("wb+")) self.addCleanup(f.close) - f.write('x' * 256 * 1024) + f.write(b'x' * 256 * 1024) f.seek(0) env = {'REQUEST_METHOD':'PUT'} fs = cgi.FieldStorage(fp=f, environ=env) @@ -216,11 +216,12 @@ Add\x20 -----------------------------721837373350705526688164684-- """ - fs = cgi.FieldStorage(fp=StringIO(postdata), environ=env) + fp = BytesIO(postdata.encode('latin-1')) + fs = cgi.FieldStorage(fp, environ=env) self.assertEqual(len(fs.list), 4) expect = [{'name':'id', 'filename':None, 'value':'1234'}, {'name':'title', 'filename':None, 'value':''}, - {'name':'file', 'filename':'test.txt', 'value':'Testing 123.'}, + {'name':'file', 'filename':'test.txt', 'value':b'Testing 123.\n'}, {'name':'submit', 'filename':None, 'value':' Add '}] for x in range(len(fs.list)): for k, exp in expect[x].items(): @@ -245,8 +246,7 @@ self.assertEqual(self._qs_result, v) def testQSAndFormData(self): - data = """ ----123 + data = """---123 Content-Disposition: form-data; name="key2" value2y @@ -270,8 +270,7 @@ self.assertEqual(self._qs_result, v) def testQSAndFormDataFile(self): - data = """ ----123 + data = """---123 Content-Disposition: form-data; name="key2" value2y @@ -299,7 +298,7 @@ } result = self._qs_result.copy() result.update({ - 'upload': 'this is the content of the fake file' + 'upload': b'this is the content of the fake file\n' # bytes }) v = gen_result(data, environ) self.assertEqual(result, v)