summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorAlexandre Vassalotti <alexandre@peadrop.com>2007-12-13 17:58:23 (GMT)
committerAlexandre Vassalotti <alexandre@peadrop.com>2007-12-13 17:58:23 (GMT)
commit2f9ca29d106779d960bf8680ec597ffce5e25d66 (patch)
treed2342a419d7030737a3b0fd7ae2f8e3f24199b7d /Lib
parentadf9ffdfbe0fb00f5a47444c1dc53eb280d0bd0a (diff)
downloadcpython-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.py10
-rw-r--r--Lib/urlparse.py2
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