]> granicus.if.org Git - python/commitdiff
Backport r59480.
authorAlexandre Vassalotti <alexandre@peadrop.com>
Thu, 13 Dec 2007 18:18:47 +0000 (18:18 +0000)
committerAlexandre Vassalotti <alexandre@peadrop.com>
Thu, 13 Dec 2007 18:18:47 +0000 (18:18 +0000)
Fix issue #1313119.

Lib/test/test_urlparse.py
Lib/urlparse.py

index 5cee4584c2ba68290f9a3ace862cc3eb8dce4b3b..dcb89f763bd3c5e3bf4c92d2ed7e415d3874c4b4 100644 (file)
@@ -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)
index eade040ff62c31fd0e5bb017d9246f2f790c6780..ad5d75f681d93921ef9ab15dddb7e033045662b5 100644 (file)
@@ -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