##// END OF EJS Templates
util: fix url.__str__() for windows file URLs...
Patrick Mezard -
r15609:8f4bad72 stable
parent child Browse files
Show More
@@ -72,9 +72,10 b' class ShortRepository(object):'
72 return hg._peerlookup(url).instance(ui, url, create)
72 return hg._peerlookup(url).instance(ui, url, create)
73
73
74 def hasdriveletter(orig, path):
74 def hasdriveletter(orig, path):
75 for scheme in schemes:
75 if path:
76 if path.startswith(scheme + ':'):
76 for scheme in schemes:
77 return False
77 if path.startswith(scheme + ':'):
78 return False
78 return orig(path)
79 return orig(path)
79
80
80 schemes = {
81 schemes = {
@@ -1629,6 +1629,8 b' class url(object):'
1629 'path'
1629 'path'
1630 >>> str(url('file:///tmp/foo/bar'))
1630 >>> str(url('file:///tmp/foo/bar'))
1631 'file:///tmp/foo/bar'
1631 'file:///tmp/foo/bar'
1632 >>> str(url('file:///c:/tmp/foo/bar'))
1633 'file:///c%3A/tmp/foo/bar'
1632 >>> print url(r'bundle:foo\bar')
1634 >>> print url(r'bundle:foo\bar')
1633 bundle:foo\bar
1635 bundle:foo\bar
1634 """
1636 """
@@ -1643,8 +1645,11 b' class url(object):'
1643 s = self.scheme + ':'
1645 s = self.scheme + ':'
1644 if self.user or self.passwd or self.host:
1646 if self.user or self.passwd or self.host:
1645 s += '//'
1647 s += '//'
1646 elif self.scheme and (not self.path or self.path.startswith('/')):
1648 elif self.scheme and (not self.path or self.path.startswith('/')
1649 or hasdriveletter(self.path)):
1647 s += '//'
1650 s += '//'
1651 if hasdriveletter(self.path):
1652 s += '/'
1648 if self.user:
1653 if self.user:
1649 s += urllib.quote(self.user, safe=self._safechars)
1654 s += urllib.quote(self.user, safe=self._safechars)
1650 if self.passwd:
1655 if self.passwd:
@@ -1716,7 +1721,7 b' def hasscheme(path):'
1716 return bool(url(path).scheme)
1721 return bool(url(path).scheme)
1717
1722
1718 def hasdriveletter(path):
1723 def hasdriveletter(path):
1719 return path[1:2] == ':' and path[0:1].isalpha()
1724 return path and path[1:2] == ':' and path[0:1].isalpha()
1720
1725
1721 def urllocalpath(path):
1726 def urllocalpath(path):
1722 return url(path, parsequery=False, parsefragment=False).localpath()
1727 return url(path, parsequery=False, parsefragment=False).localpath()
@@ -219,7 +219,7 b' def test_url():'
219 >>> u
219 >>> u
220 <url scheme: 'file', path: 'f:oo/bar/baz'>
220 <url scheme: 'file', path: 'f:oo/bar/baz'>
221 >>> str(u)
221 >>> str(u)
222 'file:f%3Aoo/bar/baz'
222 'file:///f%3Aoo/bar/baz'
223 >>> u.localpath()
223 >>> u.localpath()
224 'f:oo/bar/baz'
224 'f:oo/bar/baz'
225
225
General Comments 0
You need to be logged in to leave comments. Login now