Fix issue #1313119: urlparse "caches" parses regardless of encoding

This commit is contained in:
Alexandre Vassalotti 2007-12-13 17:58:23 +00:00
parent adf9ffdfbe
commit 2f9ca29d10
2 changed files with 11 additions and 1 deletions

View File

@ -287,6 +287,16 @@ class UrlParseTestCase(unittest.TestCase):
self.assertEqual(p.port, None) self.assertEqual(p.port, None)
self.assertEqual(p.geturl(), uri) 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(): def test_main():
test_support.run_unittest(UrlParseTestCase) test_support.run_unittest(UrlParseTestCase)

View File

@ -184,7 +184,7 @@ def urlsplit(url, scheme='', allow_fragments=True):
Note that we don't break the components up in smaller bits 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.""" (e.g. netloc is a single string) and we don't expand % escapes."""
allow_fragments = bool(allow_fragments) 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) cached = _parse_cache.get(key, None)
if cached: if cached:
return cached return cached