Commit 6be85c52 authored by Senthil Kumaran's avatar Senthil Kumaran

Merged revisions 78234 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78234 | senthil.kumaran | 2010-02-19 13:02:48 +0530 (Fri, 19 Feb 2010) | 2 lines

  Fix for Issue7904. urlparse.urlsplit to handle schemes in the way defined by RFC3986
........
parent 03c44a30
...@@ -142,7 +142,7 @@ class UrlParseTestCase(unittest.TestCase): ...@@ -142,7 +142,7 @@ class UrlParseTestCase(unittest.TestCase):
(base, relurl, expected)) (base, relurl, expected))
def test_unparse_parse(self): def test_unparse_parse(self):
for u in ['Python', './Python']: for u in ['Python', './Python','x-newscheme://foo.com/stuff']:
self.assertEqual(urllib.parse.urlunsplit(urllib.parse.urlsplit(u)), u) self.assertEqual(urllib.parse.urlunsplit(urllib.parse.urlsplit(u)), u)
self.assertEqual(urllib.parse.urlunparse(urllib.parse.urlparse(u)), u) self.assertEqual(urllib.parse.urlunparse(urllib.parse.urlparse(u)), u)
...@@ -347,6 +347,13 @@ class UrlParseTestCase(unittest.TestCase): ...@@ -347,6 +347,13 @@ class UrlParseTestCase(unittest.TestCase):
# Issue 3314: sys module is used in the error # Issue 3314: sys module is used in the error
self.assertRaises(TypeError, urllib.parse.urlencode, "foo") self.assertRaises(TypeError, urllib.parse.urlencode, "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(): def test_main():
support.run_unittest(UrlParseTestCase) support.run_unittest(UrlParseTestCase)
......
...@@ -169,7 +169,7 @@ def urlsplit(url, scheme='', allow_fragments=True): ...@@ -169,7 +169,7 @@ def urlsplit(url, scheme='', allow_fragments=True):
break break
else: else:
scheme, url = url[:i].lower(), url[i+1:] scheme, url = url[:i].lower(), url[i+1:]
if scheme in uses_netloc and url[:2] == '//': if url[:2] == '//':
netloc, url = _splitnetloc(url, 2) netloc, url = _splitnetloc(url, 2)
if allow_fragments and scheme in uses_fragment and '#' in url: if allow_fragments and scheme in uses_fragment and '#' in url:
url, fragment = url.split('#', 1) url, fragment = url.split('#', 1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment