From 4d4ac6b79c453918ebf40c690e8d57d982ee840b Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Fri, 9 Apr 2021 16:54:49 +0100 Subject: [PATCH] Don't test semicolon separators in urlencoded data Python no longer accepts ";" as a separator for `urllib.parse.parse_qs` by default (https://bugs.python.org/issue42967), causing the multipart test suite to fail with recent Python versions (3.6.13, 3.7.10, 3.8.8, 3.9.2, 3.10.0a6). While we could detect the availability of the `separator` argument and pass it, since `application/x-www-form-urlencoded` data in `POST` and `PUT` requests is probably not an issue for web cache poisoning, the current HTML spec seems clear that only "&" should be considered, so follow along with Python's API change. --- test/test_multipart.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/test_multipart.py b/test/test_multipart.py index 38c69d1..6fe864f 100644 --- a/test/test_multipart.py +++ b/test/test_multipart.py @@ -233,10 +233,9 @@ def test_empty(self): def test_urlencoded(self): for ctype in ('application/x-www-form-urlencoded', 'application/x-url-encoded'): self.env['CONTENT_TYPE'] = ctype - forms, files = self.parse('a=b&c=d;e=f') + forms, files = self.parse('a=b&c=d') self.assertEqual(forms['a'], 'b') self.assertEqual(forms['c'], 'd') - self.assertEqual(forms['e'], 'f') def test_urlencoded_latin1(self): for ctype in ('application/x-www-form-urlencoded', 'application/x-url-encoded'):