diff options
author | Alexandre Vassalotti <alexandre@peadrop.com> | 2007-12-13 17:58:23 (GMT) |
---|---|---|
committer | Alexandre Vassalotti <alexandre@peadrop.com> | 2007-12-13 17:58:23 (GMT) |
commit | 2f9ca29d106779d960bf8680ec597ffce5e25d66 (patch) | |
tree | d2342a419d7030737a3b0fd7ae2f8e3f24199b7d /Lib | |
parent | adf9ffdfbe0fb00f5a47444c1dc53eb280d0bd0a (diff) | |
download | cpython-2f9ca29d106779d960bf8680ec597ffce5e25d66.zip cpython-2f9ca29d106779d960bf8680ec597ffce5e25d66.tar.gz cpython-2f9ca29d106779d960bf8680ec597ffce5e25d66.tar.bz2 |
Fix issue #1313119: urlparse "caches" parses regardless of encoding
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_urlparse.py | 10 | ||||
-rw-r--r-- | Lib/urlparse.py | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py index 5cee458..dcb89f7 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 eade040..ad5d75f 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 |