Rev 6265: (gz) Unquote unreserved characters including tilde in urlutils.URL methods in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
Patch Queue Manager
pqm at pqm.ubuntu.com
Wed Nov 16 14:05:46 UTC 2011
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 6265 [merge]
revision-id: pqm at pqm.ubuntu.com-20111116140546-cmzfru1l3546iniu
parent: pqm at pqm.ubuntu.com-20111116133830-ldl2m6p5cfkmlt6a
parent: martin.packman at canonical.com-20111116133723-vdt7jaelp6nnsz7d
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2011-11-16 14:05:46 +0000
message:
(gz) Unquote unreserved characters including tilde in urlutils.URL methods
(Martin Packman)
modified:
bzrlib/tests/per_transport.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
bzrlib/urlutils.py urlutils.py-20060502195429-e8a161ecf8fac004
doc/en/release-notes/bzr-2.5.txt bzr2.5.txt-20110708125756-587p0hpw7oke4h05-1
=== modified file 'bzrlib/tests/per_transport.py'
--- a/bzrlib/tests/per_transport.py 2011-08-19 22:34:02 +0000
+++ b/bzrlib/tests/per_transport.py 2011-11-16 12:17:27 +0000
@@ -1802,3 +1802,25 @@
t2 = t.clone('link')
st = t2.stat('')
self.assertTrue(stat.S_ISLNK(st.st_mode))
+
+ def test_abspath_url_unquote_unreserved(self):
+ """URLs from abspath should have unreserved characters unquoted
+
+ Need consistent quoting notably for tildes, see lp:842223 for more.
+ """
+ t = self.get_transport()
+ needlessly_escaped_dir = "%2D%2E%30%39%41%5A%5F%61%7A%7E/"
+ self.assertEqual(t.base + "-.09AZ_az~",
+ t.abspath(needlessly_escaped_dir))
+
+ def test_clone_url_unquote_unreserved(self):
+ """Base URL of a cloned branch needs unreserved characters unquoted
+
+ Cloned transports should be prefix comparable for things like the
+ isolation checking of tests, see lp:842223 for more.
+ """
+ t1 = self.get_transport()
+ needlessly_escaped_dir = "%2D%2E%30%39%41%5A%5F%61%7A%7E/"
+ self.build_tree([needlessly_escaped_dir], transport=t1)
+ t2 = t1.clone(needlessly_escaped_dir)
+ self.assertEqual(t1.base + "-.09AZ_az~/", t2.base)
=== modified file 'bzrlib/tests/test_smart_transport.py'
--- a/bzrlib/tests/test_smart_transport.py 2011-11-07 17:21:15 +0000
+++ b/bzrlib/tests/test_smart_transport.py 2011-11-16 13:37:23 +0000
@@ -3886,7 +3886,7 @@
# still work correctly.
base_transport = remote.RemoteHTTPTransport('bzr+http://host/%7Ea/b')
new_transport = base_transport.clone('c')
- self.assertEqual('bzr+http://host/%7Ea/b/c/', new_transport.base)
+ self.assertEqual(base_transport.base + 'c/', new_transport.base)
self.assertEqual(
'c/',
new_transport._client.remote_path_from_transport(new_transport))
=== modified file 'bzrlib/urlutils.py'
--- a/bzrlib/urlutils.py 2011-10-06 07:43:13 +0000
+++ b/bzrlib/urlutils.py 2011-11-16 10:36:31 +0000
@@ -750,7 +750,7 @@
else:
self.password = None
self.port = port
- self.quoted_path = quoted_path
+ self.quoted_path = _url_hex_escapes_re.sub(_unescape_safe_chars, quoted_path)
self.path = urllib.unquote(self.quoted_path)
def __eq__(self, other):
@@ -835,6 +835,7 @@
"""
if not isinstance(relpath, str):
raise errors.InvalidURL(relpath)
+ relpath = _url_hex_escapes_re.sub(_unescape_safe_chars, relpath)
if relpath.startswith('/'):
base_parts = []
else:
@@ -866,7 +867,7 @@
if offset is not None:
relative = unescape(offset).encode('utf-8')
path = self._combine_paths(self.path, relative)
- path = urllib.quote(path)
+ path = urllib.quote(path, safe="/~")
else:
path = self.quoted_path
return self.__class__(self.scheme, self.quoted_user,
=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt 2011-11-16 12:25:23 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt 2011-11-16 14:05:46 +0000
@@ -32,6 +32,9 @@
.. Fixes for situations where bzr would previously crash or give incorrect
or undesirable results.
+* Resolve regression from colocated branch path handling, by ensuring that
+ unreserved characters are unquoted in URLs. (Martin Packman, #842223)
+
* Support verifying signatures on remote repositories.
(Jelmer Vernooij, #889694)
More information about the bazaar-commits
mailing list