]> granicus.if.org Git - python/commitdiff
merge from 3.1
authorSenthil Kumaran <orsenthil@gmail.com>
Fri, 15 Apr 2011 10:21:26 +0000 (18:21 +0800)
committerSenthil Kumaran <orsenthil@gmail.com>
Fri, 15 Apr 2011 10:21:26 +0000 (18:21 +0800)
1  2 
Lib/test/test_urlparse.py
Lib/urllib/parse.py
Misc/NEWS

index 628b8ec04aeb0a318e27cbce72049a355a110918,252eb138d06f23cf61ab0c9284a7798d5986faeb..c8d572cda16317331053e6787618278c5a400758
@@@ -228,10 -197,13 +228,15 @@@ class UrlParseTestCase(unittest.TestCas
          #self.checkJoin(RFC1808_BASE, 'http:g', 'http:g')
          #self.checkJoin(RFC1808_BASE, 'http:', 'http:')
  
+     def test_RFC2368(self):
+         # Issue 11467: path that starts with a number is not parsed correctly
+         self.assertEqual(urllib.parse.urlparse('mailto:1337@example.org'),
+                 ('mailto', '', '1337@example.org', '', '', ''))
      def test_RFC2396(self):
          # cases from RFC 2396
 +
 +
          self.checkJoin(RFC2396_BASE, 'g:h', 'g:h')
          self.checkJoin(RFC2396_BASE, 'g', 'http://a/b/c/g')
          self.checkJoin(RFC2396_BASE, './g', 'http://a/b/c/g')
index 9a3e42ee786714d26e267fa65176890553f7a3df,a20a3d4156e1175864740917b153df250c592604..45ae202d5c630b74a7a49f150ec1df1995bc62aa
@@@ -339,18 -183,20 +339,23 @@@ def urlsplit(url, scheme='', allow_frag
                  url, query = url.split('?', 1)
              v = SplitResult(scheme, netloc, url, query, fragment)
              _parse_cache[key] = v
 -            return v
 +            return _coerce_result(v)
-         if url.endswith(':') or not url[i+1].isdigit():
-             for c in url[:i]:
-                 if c not in scheme_chars:
-                     break
-             else:
+         for c in url[:i]:
+             if c not in scheme_chars:
+                 break
+         else:
+             try:
+                 # make sure "url" is not actually a port number (in which case
+                 # "scheme" is really part of the path
+                 _testportnum = int(url[i+1:])
+             except ValueError:
                  scheme, url = url[:i].lower(), url[i+1:]
      if url[:2] == '//':
          netloc, url = _splitnetloc(url, 2)
 +        if (('[' in netloc and ']' not in netloc) or
 +                (']' in netloc and '[' not in netloc)):
 +            raise ValueError("Invalid IPv6 URL")
      if allow_fragments and scheme in uses_fragment and '#' in url:
          url, fragment = url.split('#', 1)
      if scheme in uses_query and '?' in url:
diff --cc Misc/NEWS
Simple merge