diff options
author | Senthil Kumaran <orsenthil@gmail.com> | 2010-02-19 07:32:48 (GMT) |
---|---|---|
committer | Senthil Kumaran <orsenthil@gmail.com> | 2010-02-19 07:32:48 (GMT) |
commit | 4e78de89d0df77a2bea965eb838f0d37932c34d6 (patch) | |
tree | 3ef1811e7fe6a6959708fcd5f14666eb9bfaf679 | |
parent | cc43b56960b46734e0d0e19521376d5fdb6af587 (diff) | |
download | cpython-4e78de89d0df77a2bea965eb838f0d37932c34d6.zip cpython-4e78de89d0df77a2bea965eb838f0d37932c34d6.tar.gz cpython-4e78de89d0df77a2bea965eb838f0d37932c34d6.tar.bz2 |
Fix for Issue7904. urlparse.urlsplit to handle schemes in the way defined by RFC3986
-rw-r--r-- | Lib/test/test_urlparse.py | 11 | ||||
-rw-r--r-- | Lib/urlparse.py | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py index e7a8317..554328b 100644 --- a/Lib/test/test_urlparse.py +++ b/Lib/test/test_urlparse.py @@ -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) diff --git a/Lib/urlparse.py b/Lib/urlparse.py index 5e5d37d..1d065d3 100644 --- a/Lib/urlparse.py +++ b/Lib/urlparse.py @@ -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) |