diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py index a5b7966c7780e9..26f120c8746695 100644 --- a/Lib/test/test_urlparse.py +++ b/Lib/test/test_urlparse.py @@ -1527,6 +1527,34 @@ def test_parse_qsl_false_value(self): self.assertEqual(cm.filename, __file__) self.assertRaises(ValueError, urllib.parse.parse_qsl, x, separator=1) + def test_parse_qsl_strict_parsing(self): + self.assertRaises(ValueError, urllib.parse.parse_qsl, + 'a=1&b&c=3', strict_parsing=True) + self.assertRaises(ValueError, urllib.parse.parse_qsl, + b'a=1&b', strict_parsing=True) + self.assertRaises(ValueError, urllib.parse.parse_qs, + 'a=1&b&c=3', strict_parsing=True) + self.assertRaises(ValueError, urllib.parse.parse_qs, + b'a=1&b', strict_parsing=True) + self.assertRaises(ValueError, urllib.parse.parse_qsl, + 'a=1&&c=3', strict_parsing=True) + self.assertRaises(ValueError, urllib.parse.parse_qsl, + b'a=1&', strict_parsing=True) + self.assertRaises(ValueError, urllib.parse.parse_qs, + 'a=1&&c=3', strict_parsing=True) + self.assertRaises(ValueError, urllib.parse.parse_qs, + b'a=1&', strict_parsing=True) + self.assertEqual(urllib.parse.parse_qsl('a=1&c=3', strict_parsing=True), + [('a', '1'), ('c', '3')]) + self.assertEqual(urllib.parse.parse_qs('a=1&c=3', strict_parsing=True), + {'a': ['1'], 'c': ['3']}) + self.assertEqual(urllib.parse.parse_qsl('=abc', strict_parsing=True), + [('', 'abc')]) + self.assertEqual( + urllib.parse.parse_qsl( + 'abc=', strict_parsing=True, keep_blank_values=True), + [('abc', '')]) + def test_parse_qsl_errors(self): self.assertRaises(TypeError, urllib.parse.parse_qsl, list(b'a=b')) self.assertRaises(TypeError, urllib.parse.parse_qsl, iter(b'a=b'))