##// END OF EJS Templates
git: update check for invalid URL characters to work with Python versions that include an attempt at fixing the very same problem...
Mads Kiilerich -
r8681:f0fbb0fe default
parent child Browse files
Show More
@@ -192,7 +192,11 b' class GitRepository(BaseRepository):'
192 >>> GitRepository._check_url('git://example.com/\t')
192 >>> GitRepository._check_url('git://example.com/\t')
193 Traceback (most recent call last):
193 Traceback (most recent call last):
194 ...
194 ...
195 urllib.error.URLError: <urlopen error Invalid ...>
196
197 The failure above will be one of, depending on the level of WhatWG support:
195 urllib.error.URLError: <urlopen error Invalid whitespace character in path: '\t'>
198 urllib.error.URLError: <urlopen error Invalid whitespace character in path: '\t'>
199 urllib.error.URLError: <urlopen error Invalid url: 'git://example.com/ ' normalizes to 'git://example.com/'>
196 """
200 """
197 try:
201 try:
198 parsed_url = urllib.parse.urlparse(url)
202 parsed_url = urllib.parse.urlparse(url)
@@ -204,6 +208,10 b' class GitRepository(BaseRepository):'
204 if os.path.isabs(url) and os.path.isdir(url):
208 if os.path.isabs(url) and os.path.isdir(url):
205 return
209 return
206
210
211 unparsed_url = urllib.parse.urlunparse(parsed_url)
212 if unparsed_url != url:
213 raise urllib.error.URLError("Invalid url: '%s' normalizes to '%s'" % (url, unparsed_url))
214
207 if parsed_url.scheme == 'git':
215 if parsed_url.scheme == 'git':
208 # Mitigate problems elsewhere with incorrect handling of encoded paths.
216 # Mitigate problems elsewhere with incorrect handling of encoded paths.
209 # Don't trust urllib.parse.unquote but be prepared for more flexible implementations elsewhere.
217 # Don't trust urllib.parse.unquote but be prepared for more flexible implementations elsewhere.
General Comments 0
You need to be logged in to leave comments. Login now