From 483704508d2e2271e6eb0090ebaec7ae086f3db8 Mon Sep 17 00:00:00 2001 From: Alexandre Vassalotti Date: Thu, 13 Dec 2007 18:18:47 +0000 Subject: [PATCH] Backport r59480. Fix issue #1313119. --- Lib/test/test_urlparse.py | 10 ++++++++++ Lib/urlparse.py | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py index 5cee4584c2..dcb89f763b 100644 --- a/Lib/test/test_urlparse.py +++ b/Lib/test/test_urlparse.py @@ -287,6 +287,16 @@ class UrlParseTestCase(unittest.TestCase): self.assertEqual(p.port, None) self.assertEqual(p.geturl(), uri) + def test_caching(self): + # Test case for bug #1313119 + uri = "http://example.com/doc/" + unicode_uri = unicode(uri) + + urlparse.urlparse(unicode_uri) + p = urlparse.urlparse(uri) + self.assertEqual(type(p.scheme), type(uri)) + self.assertEqual(type(p.hostname), type(uri)) + self.assertEqual(type(p.path), type(uri)) def test_main(): test_support.run_unittest(UrlParseTestCase) diff --git a/Lib/urlparse.py b/Lib/urlparse.py index eade040ff6..ad5d75f681 100644 --- a/Lib/urlparse.py +++ b/Lib/urlparse.py @@ -184,7 +184,7 @@ def urlsplit(url, scheme='', allow_fragments=True): Note that we don't break the components up in smaller bits (e.g. netloc is a single string) and we don't expand % escapes.""" allow_fragments = bool(allow_fragments) - key = url, scheme, allow_fragments + key = url, scheme, allow_fragments, type(url), type(scheme) cached = _parse_cache.get(key, None) if cached: return cached -- 2.50.0