|
19 | 19 | ("=a", [('', 'a')]),
|
20 | 20 | ("a", [('a', '')]),
|
21 | 21 | ("a=", [('a', '')]),
|
| 22 | + ("a=b=c", [('a', 'b=c')]), |
| 23 | + ("a%3Db=c", [('a=b', 'c')]), |
| 24 | + ("a=b&c=d", [('a', 'b'), ('c', 'd')]), |
| 25 | + ("a=b%26c=d", [('a', 'b&c=d')]), |
22 | 26 | ("&a=b", [('a', 'b')]),
|
23 | 27 | ("a=a+b&b=b+c", [('a', 'a b'), ('b', 'b c')]),
|
24 | 28 | ("a=1&a=2", [('a', '1'), ('a', '2')]),
|
|
29 | 33 | (b"=a", [(b'', b'a')]),
|
30 | 34 | (b"a", [(b'a', b'')]),
|
31 | 35 | (b"a=", [(b'a', b'')]),
|
| 36 | + (b"a=b=c", [(b'a', b'b=c')]), |
| 37 | + (b"a%3Db=c", [(b'a=b', b'c')]), |
| 38 | + (b"a=b&c=d", [(b'a', b'b'), (b'c', b'd')]), |
| 39 | + (b"a=b%26c=d", [(b'a', b'b&c=d')]), |
32 | 40 | (b"&a=b", [(b'a', b'b')]),
|
33 | 41 | (b"a=a+b&b=b+c", [(b'a', b'a b'), (b'b', b'b c')]),
|
34 | 42 | (b"a=1&a=2", [(b'a', b'1'), (b'a', b'2')]),
|
35 | 43 | (";a=b", [(';a', 'b')]),
|
36 | 44 | ("a=a+b;b=b+c", [('a', 'a b;b=b c')]),
|
37 | 45 | (b";a=b", [(b';a', b'b')]),
|
38 | 46 | (b"a=a+b;b=b+c", [(b'a', b'a b;b=b c')]),
|
| 47 | + |
| 48 | + ("\u0141=\xE9", [('\u0141', '\xE9')]), |
| 49 | + ("%C5%81=%C3%A9", [('\u0141', '\xE9')]), |
| 50 | + ("%81=%A9", [('\ufffd', '\ufffd')]), |
| 51 | + (b"\xc5\x81=\xc3\xa9", [(b'\xc5\x81', b'\xc3\xa9')]), |
| 52 | + (b"%C5%81=%C3%A9", [(b'\xc5\x81', b'\xc3\xa9')]), |
| 53 | + (b"\x81=\xA9", [(b'\x81', b'\xa9')]), |
| 54 | + (b"%81=%A9", [(b'\x81', b'\xa9')]), |
39 | 55 | ]
|
40 | 56 |
|
41 | 57 | # Each parse_qs testcase is a two-tuple that contains
|
|
49 | 65 | ("=a", {'': ['a']}),
|
50 | 66 | ("a", {'a': ['']}),
|
51 | 67 | ("a=", {'a': ['']}),
|
| 68 | + ("a=b=c", {'a': ['b=c']}), |
| 69 | + ("a%3Db=c", {'a=b': ['c']}), |
| 70 | + ("a=b&c=d", {'a': ['b'], 'c': ['d']}), |
| 71 | + ("a=b%26c=d", {'a': ['b&c=d']}), |
52 | 72 | ("&a=b", {'a': ['b']}),
|
53 | 73 | ("a=a+b&b=b+c", {'a': ['a b'], 'b': ['b c']}),
|
54 | 74 | ("a=1&a=2", {'a': ['1', '2']}),
|
|
59 | 79 | (b"=a", {b'': [b'a']}),
|
60 | 80 | (b"a", {b'a': [b'']}),
|
61 | 81 | (b"a=", {b'a': [b'']}),
|
| 82 | + (b"a=b=c", {b'a': [b'b=c']}), |
| 83 | + (b"a%3Db=c", {b'a=b': [b'c']}), |
| 84 | + (b"a=b&c=d", {b'a': [b'b'], b'c': [b'd']}), |
| 85 | + (b"a=b%26c=d", {b'a': [b'b&c=d']}), |
62 | 86 | (b"&a=b", {b'a': [b'b']}),
|
63 | 87 | (b"a=a+b&b=b+c", {b'a': [b'a b'], b'b': [b'b c']}),
|
64 | 88 | (b"a=1&a=2", {b'a': [b'1', b'2']}),
|
65 | 89 | (";a=b", {';a': ['b']}),
|
66 | 90 | ("a=a+b;b=b+c", {'a': ['a b;b=b c']}),
|
67 | 91 | (b";a=b", {b';a': [b'b']}),
|
68 | 92 | (b"a=a+b;b=b+c", {b'a':[ b'a b;b=b c']}),
|
| 93 | + (b"a=a%E2%80%99b", {b'a': [b'a\xe2\x80\x99b']}), |
| 94 | + |
| 95 | + ("\u0141=\xE9", {'\u0141': ['\xE9']}), |
| 96 | + ("%C5%81=%C3%A9", {'\u0141': ['\xE9']}), |
| 97 | + ("%81=%A9", {'\ufffd': ['\ufffd']}), |
| 98 | + (b"\xc5\x81=\xc3\xa9", {b'\xc5\x81': [b'\xc3\xa9']}), |
| 99 | + (b"%C5%81=%C3%A9", {b'\xc5\x81': [b'\xc3\xa9']}), |
| 100 | + (b"\x81=\xA9", {b'\x81': [b'\xa9']}), |
| 101 | + (b"%81=%A9", {b'\x81': [b'\xa9']}), |
69 | 102 | ]
|
70 | 103 |
|
71 | 104 | class UrlParseTestCase(unittest.TestCase):
|
@@ -995,8 +1028,8 @@ def test_parse_qsl_encoding(self):
|
995 | 1028 |
|
996 | 1029 | def test_parse_qsl_max_num_fields(self):
|
997 | 1030 | with self.assertRaises(ValueError):
|
998 |
| - urllib.parse.parse_qs('&'.join(['a=a']*11), max_num_fields=10) |
999 |
| - urllib.parse.parse_qs('&'.join(['a=a']*10), max_num_fields=10) |
| 1031 | + urllib.parse.parse_qsl('&'.join(['a=a']*11), max_num_fields=10) |
| 1032 | + urllib.parse.parse_qsl('&'.join(['a=a']*10), max_num_fields=10) |
1000 | 1033 |
|
1001 | 1034 | def test_parse_qs_separator(self):
|
1002 | 1035 | parse_qs_semicolon_cases = [
|
|
0 commit comments