]> granicus.if.org Git - python/commitdiff
Fix for Issue7904. urlparse.urlsplit to handle schemes in the way defined by RFC3986
authorSenthil Kumaran <orsenthil@gmail.com>
Fri, 19 Feb 2010 07:32:48 +0000 (07:32 +0000)
committerSenthil Kumaran <orsenthil@gmail.com>
Fri, 19 Feb 2010 07:32:48 +0000 (07:32 +0000)
Lib/test/test_urlparse.py
Lib/urlparse.py

index e7a8317323c6a495a59e00cb06bce333a72389af..554328b7d97c7b72801cc65f88c3c61d6996037a 100644 (file)
@@ -141,7 +141,7 @@ class UrlParseTestCase(unittest.TestCase):
                          (base, relurl, expected))
 
     def test_unparse_parse(self):
-        for u in ['Python', './Python']:
+        for u in ['Python', './Python','x-newscheme://foo.com/stuff']:
             self.assertEqual(urlparse.urlunsplit(urlparse.urlsplit(u)), u)
             self.assertEqual(urlparse.urlunparse(urlparse.urlparse(u)), u)
 
@@ -353,6 +353,15 @@ class UrlParseTestCase(unittest.TestCase):
         self.assertEqual(urlparse.urlparse("http://example.com?blahblah=/foo"),
                          ('http', 'example.com', '', '', 'blahblah=/foo', ''))
 
+    def test_anyscheme(self):
+        # Issue 7904: s3://foo.com/stuff has netloc "foo.com".
+        self.assertEqual(urlparse.urlparse("s3://foo.com/stuff"),
+                         ('s3','foo.com','/stuff','','',''))
+        self.assertEqual(urlparse.urlparse("x-newscheme://foo.com/stuff"),
+                         ('x-newscheme','foo.com','/stuff','','',''))
+
+
+
 def test_main():
     test_support.run_unittest(UrlParseTestCase)
 
index 5e5d37d132c1231a87c7f770b4a5c24a5cc360b7..1d065d3986e8d445c008697bcec67f40c1c4fa5a 100644 (file)
@@ -163,7 +163,8 @@ def urlsplit(url, scheme='', allow_fragments=True):
                 break
         else:
             scheme, url = url[:i].lower(), url[i+1:]
-    if scheme in uses_netloc and url[:2] == '//':
+
+    if url[:2] == '//':
         netloc, url = _splitnetloc(url, 2)
     if allow_fragments and scheme in uses_fragment and '#' in url:
         url, fragment = url.split('#', 1)