Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Lib/test/test_cgi.py

    r2 r391  
    1 from test.test_support import run_unittest
     1from test.test_support import run_unittest, check_warnings
    22import cgi
    33import os
     
    55import tempfile
    66import unittest
    7 from StringIO import StringIO
    87
    98class HackedSysModule:
     
    103102    ]
    104103
    105 def norm(list):
    106     if type(list) == type([]):
    107         list.sort()
    108     return list
    109 
    110104def first_elts(list):
    111105    return map(lambda x:x[0], list)
     
    121115    result = {}
    122116    for k, v in dict(form).items():
    123         result[k] = type(v) is list and form.getlist(k) or v.value
     117        result[k] = isinstance(v, list) and form.getlist(k) or v.value
    124118
    125119    return result
    126120
    127121class CgiTests(unittest.TestCase):
     122
     123    def test_escape(self):
     124        self.assertEqual("test & string", cgi.escape("test & string"))
     125        self.assertEqual("&lt;test string&gt;", cgi.escape("<test string>"))
     126        self.assertEqual("&quot;test string&quot;", cgi.escape('"test string"', True))
    128127
    129128    def test_strict(self):
     
    139138            sd = cgi.SvFormContentDict(env)
    140139            fs = cgi.FieldStorage(environ=env)
    141             if type(expect) == type({}):
     140            if isinstance(expect, dict):
    142141                # test dict interface
    143142                self.assertEqual(len(expect), len(fcd))
    144                 self.assertEqual(norm(expect.keys()), norm(fcd.keys()))
    145                 self.assertEqual(norm(expect.values()), norm(fcd.values()))
    146                 self.assertEqual(norm(expect.items()), norm(fcd.items()))
     143                self.assertItemsEqual(expect.keys(), fcd.keys())
     144                self.assertItemsEqual(expect.values(), fcd.values())
     145                self.assertItemsEqual(expect.items(), fcd.items())
    147146                self.assertEqual(fcd.get("nonexistent field", "default"), "default")
    148147                self.assertEqual(len(sd), len(fs))
    149                 self.assertEqual(norm(sd.keys()), norm(fs.keys()))
     148                self.assertItemsEqual(sd.keys(), fs.keys())
    150149                self.assertEqual(fs.getvalue("nonexistent field", "default"), "default")
    151150                # test individual fields
    152151                for key in expect.keys():
    153152                    expect_val = expect[key]
    154                     self.assert_(fcd.has_key(key))
    155                     self.assertEqual(norm(fcd[key]), norm(expect[key]))
     153                    self.assertTrue(fcd.has_key(key))
     154                    self.assertItemsEqual(fcd[key], expect[key])
    156155                    self.assertEqual(fcd.get(key, "default"), fcd[key])
    157                     self.assert_(fs.has_key(key))
     156                    self.assertTrue(fs.has_key(key))
    158157                    if len(expect_val) > 1:
    159158                        single_value = 0
     
    163162                        val = sd[key]
    164163                    except IndexError:
    165                         self.failIf(single_value)
     164                        self.assertFalse(single_value)
    166165                        self.assertEqual(fs.getvalue(key), expect_val)
    167166                    else:
    168                         self.assert_(single_value)
     167                        self.assertTrue(single_value)
    169168                        self.assertEqual(val, expect_val[0])
    170169                        self.assertEqual(fs.getvalue(key), expect_val[0])
    171                     self.assertEqual(norm(sd.getlist(key)), norm(expect_val))
     170                    self.assertItemsEqual(sd.getlist(key), expect_val)
    172171                    if single_value:
    173                         self.assertEqual(norm(sd.values()),
    174                                first_elts(norm(expect.values())))
    175                         self.assertEqual(norm(sd.items()),
    176                                first_second_elts(norm(expect.items())))
     172                        self.assertItemsEqual(sd.values(),
     173                                                first_elts(expect.values()))
     174                        self.assertItemsEqual(sd.items(),
     175                                                first_second_elts(expect.items()))
    177176
    178177    def test_weird_formcontentdict(self):
     
    185184        for k, v in d.items():
    186185            self.assertEqual(expect[k], v)
    187         self.assertEqual(norm(expect.values()), norm(d.values()))
     186        self.assertItemsEqual(expect.values(), d.values())
    188187
    189188    def test_log(self):
     
    232231        # (by read_binary); if we are chunking properly, it will be called 5 times
    233232        # as long as the chunksize is 1 << 16.
    234         self.assert_(f.numcalls > 2)
     233        self.assertTrue(f.numcalls > 2)
    235234
    236235    def test_fieldstorage_multipart(self):
     
    258257"""
    259258        fs = cgi.FieldStorage(fp=StringIO(postdata), environ=env)
    260         self.assertEquals(len(fs.list), 4)
     259        self.assertEqual(len(fs.list), 4)
    261260        expect = [{'name':'id', 'filename':None, 'value':'1234'},
    262261                  {'name':'title', 'filename':None, 'value':''},
     
    266265            for k, exp in expect[x].items():
    267266                got = getattr(fs.list[x], k)
    268                 self.assertEquals(got, exp)
     267                self.assertEqual(got, exp)
     268
     269    def test_fieldstorage_multipart_maxline(self):
     270        # Issue #18167
     271        maxline = 1 << 16
     272        self.maxDiff = None
     273        def check(content):
     274            data = """
     275---123
     276Content-Disposition: form-data; name="upload"; filename="fake.txt"
     277Content-Type: text/plain
     278
     279%s
     280---123--
     281""".replace('\n', '\r\n') % content
     282            environ = {
     283                'CONTENT_LENGTH':   str(len(data)),
     284                'CONTENT_TYPE':     'multipart/form-data; boundary=-123',
     285                'REQUEST_METHOD':   'POST',
     286            }
     287            self.assertEqual(gen_result(data, environ), {'upload': content})
     288        check('x' * (maxline - 1))
     289        check('x' * (maxline - 1) + '\r')
     290        check('x' * (maxline - 1) + '\r' + 'y' * (maxline - 1))
    269291
    270292    _qs_result = {
     
    347369    def test_deprecated_parse_qs(self):
    348370        # this func is moved to urlparse, this is just a sanity check
    349         self.assertEqual({'a': ['A1'], 'B': ['B3'], 'b': ['B2']},
    350                          cgi.parse_qs('a=A1&b=B2&B=B3'))
     371        with check_warnings(('cgi.parse_qs is deprecated, use urlparse.'
     372                             'parse_qs instead', PendingDeprecationWarning)):
     373            self.assertEqual({'a': ['A1'], 'B': ['B3'], 'b': ['B2']},
     374                             cgi.parse_qs('a=A1&b=B2&B=B3'))
    351375
    352376    def test_deprecated_parse_qsl(self):
    353377        # this func is moved to urlparse, this is just a sanity check
    354         self.assertEqual([('a', 'A1'), ('b', 'B2'), ('B', 'B3')],
    355                          cgi.parse_qsl('a=A1&b=B2&B=B3'))
     378        with check_warnings(('cgi.parse_qsl is deprecated, use urlparse.'
     379                             'parse_qsl instead', PendingDeprecationWarning)):
     380            self.assertEqual([('a', 'A1'), ('b', 'B2'), ('B', 'B3')],
     381                             cgi.parse_qsl('a=A1&b=B2&B=B3'))
    356382
    357383    def test_parse_header(self):
     
    380406            cgi.parse_header('attachment; filename="strange;name";size=123;'),
    381407            ("attachment", {"filename": "strange;name", "size": "123"}))
     408        self.assertEqual(
     409            cgi.parse_header('form-data; name="files"; filename="fo\\"o;bar"'),
     410            ("form-data", {"name": "files", "filename": 'fo"o;bar'}))
    382411
    383412
Note: See TracChangeset for help on using the changeset viewer.