Mercurial > hg
changeset 14313:a389dd285282
util: make str(url) return file:/// for abs paths again
str(url) was recently changed to return only file:/. However, the
canonical way to represent absolute local paths is file:/// [1], which
is also expected by at least hgsubversion.
Relative paths are returned as file:the/relative/path.
[1] http://en.wikipedia.org/wiki/File_URI_scheme
author | Peter Arrenbrecht <peter.arrenbrecht@gmail.com> |
---|---|
date | Thu, 12 May 2011 16:41:56 +0200 |
parents | ba883fa211f3 |
children | c322890b03e6 |
files | mercurial/util.py tests/test-url.py |
diffstat | 2 files changed, 18 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/util.py Thu May 12 18:35:04 2011 -0500 +++ b/mercurial/util.py Thu May 12 16:41:56 2011 +0200 @@ -1500,6 +1500,8 @@ 'bundle:../foo' >>> str(url('path')) 'path' + >>> str(url('file:///tmp/foo/bar')) + 'file:///tmp/foo/bar' >>> print url(r'bundle:foo\bar') bundle:foo\bar """ @@ -1512,8 +1514,9 @@ return s s = self.scheme + ':' - if (self.user or self.passwd or self.host or - self.scheme and not self.path): + if self.user or self.passwd or self.host: + s += '//' + elif self.scheme and (not self.path or self.path.startswith('/')): s += '//' if self.user: s += urllib.quote(self.user, safe=self._safechars)
--- a/tests/test-url.py Thu May 12 18:35:04 2011 -0500 +++ b/tests/test-url.py Thu May 12 16:41:56 2011 +0200 @@ -191,11 +191,23 @@ >>> str(u) 'http://foo/bar' + >>> u = url('file:/foo/bar/baz') + >>> u + <url scheme: 'file', path: '/foo/bar/baz'> + >>> str(u) + 'file:///foo/bar/baz' + >>> u = url('file:///foo/bar/baz') >>> u <url scheme: 'file', path: '/foo/bar/baz'> >>> str(u) - 'file:/foo/bar/baz' + 'file:///foo/bar/baz' + + >>> u = url('file:foo/bar/baz') + >>> u + <url scheme: 'file', path: 'foo/bar/baz'> + >>> str(u) + 'file:foo/bar/baz' """ doctest.testmod(optionflags=doctest.NORMALIZE_WHITESPACE)