From d5cc66bc533b9846f5f15e2f5a4cf15a72d99fcd Mon Sep 17 00:00:00 2001 From: flan Date: Fri, 2 Nov 2018 13:54:22 +0100 Subject: [PATCH 1/2] Fix infinite loop in wpull.url.query_to_map --- wpull/url.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wpull/url.py b/wpull/url.py index 1d61c2a3..00860c5f 100644 --- a/wpull/url.py +++ b/wpull/url.py @@ -672,7 +672,7 @@ def query_to_map(text): else: dict_obj[key].append('') - return query_to_map(text) + return dict_obj @functools.lru_cache() From 75c3603907860c5ba0cca38af852c6c399d6b1b5 Mon Sep 17 00:00:00 2001 From: flan Date: Fri, 2 Nov 2018 13:54:34 +0100 Subject: [PATCH 2/2] Add tests for wpull.url.query_to_map --- wpull/url_test.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/wpull/url_test.py b/wpull/url_test.py index dc32dd5e..3a1c5f61 100644 --- a/wpull/url_test.py +++ b/wpull/url_test.py @@ -86,6 +86,7 @@ def test_url_info_parts(self): self.assertEqual(81, url_info.port) self.assertEqual('/%C3%A1sdF%E2%80%8C/ghjK', url_info.path) self.assertEqual('a=b=c&D', url_info.query) + self.assertEqual({'a': ['b=c'], 'D': ['']}, url_info.query_map) self.assertEqual('/?', url_info.fragment) self.assertEqual('utf-8', url_info.encoding) self.assertEqual( @@ -108,6 +109,7 @@ def test_url_info_parts(self): self.assertEqual(21, url_info.port) self.assertEqual('/mydocs/', url_info.path) self.assertFalse(url_info.query) + self.assertEqual({'': ['']}, url_info.query_map) self.assertFalse(url_info.fragment) self.assertEqual('utf-8', url_info.encoding) self.assertEqual( @@ -186,6 +188,10 @@ def test_url_info_percent_encode(self): 'blah=%95%B6%8E%9A%89%BB%82%AF', url_info.query ) + self.assertEqual( + {'blah': ['%95%B6%8E%9A%89%BB%82%AF']}, + url_info.query_map + ) self.assertEqual( 'shift_jis', url_info.encoding @@ -389,6 +395,10 @@ def test_url_info_query(self): 'http://example.com/?a=1&b=', URLInfo.parse('http://example.com?a=1&b=').url ) + self.assertEqual( + {'a': ['b c d%20e-f']}, + URLInfo.parse('http://example.com?a=b+c+d%20e-f').query_map + ) def test_url_info_ipv6(self): self.assertEqual(