From 753781a04ebcc135ab31130dc84d918191644fa6 Mon Sep 17 00:00:00 2001 From: "Paul J. Dorn" Date: Wed, 7 Feb 2024 02:22:11 +0100 Subject: [PATCH] prove YARL_NO_EXTENSIONS=1 deviation moved from https://github.com/aio-libs/aiohttp/pull/8088 --- tests/test_url_parsing.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/test_url_parsing.py b/tests/test_url_parsing.py index 5ce419ab8..fe337c589 100644 --- a/tests/test_url_parsing.py +++ b/tests/test_url_parsing.py @@ -580,3 +580,34 @@ def test_empty_path(self): assert u.path == "" assert u.query_string == "" assert u.fragment == "" + + def test_truncated_utf_sequence(self): + raw_path = b"/P\xc3\xbcnktchen\xa0\xef\xb7#" + abspath, _hash_separator, frag = raw_path.decode( + "utf-8", "surrogateescape" + ).partition("#") + u = URL.build(path=abspath, query_string="", fragment=frag, encoded=True) + u2 = URL("/P%C3%BCnktchen\udca0\udcef\udcb7") + assert u.scheme == "" + assert u.user is None + assert u.password is None + assert u.path == "/Pünktchen\udca0\udcef\udcb7" + assert u.query_string == "" + assert u.fragment == "" + assert u.path == u2.path + + def test_truncated_utf_sequence_frag(self): + raw_path = b"/P\xc3\xbcnktchen\xa0\xef\xb7#P\xc3\xbcnktelchen\xa0\xef\xb6" + abspath, _hash_separator, frag = raw_path.decode( + "utf-8", "surrogateescape" + ).partition("#") + u = URL.build(path=abspath, query_string="", fragment=frag, encoded=True) + u2 = URL("/P%C3%BCnktchen\udca0\udcef\udcb7#Pünktelchen\udca0\udcef\udcb6") + assert u.scheme == "" + assert u.user is None + assert u.password is None + assert u.path == "/Pünktchen\udca0\udcef\udcb7" + assert u.query_string == "" + assert u.fragment == "Pünktelchen\udca0\udcef\udcb6" + assert u.path == u2.path + # assert u.fragment == u2.fragment