summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-11-04 16:20:06 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-11-04 16:20:06 +0000
commit00246636d66961cf50fea902972e828ae0890f7b (patch)
tree0b264e98885e72cc9f036b138b802e372705551f
parent6a1d074bfd30d5d24faf02725542ec87509c310a (diff)
parentf92546e1179792512134ee51134db1107b7075e0 (diff)
downloadmorph-00246636d66961cf50fea902972e828ae0890f7b.tar.gz
Merge branch 'liw/rac-escape-url'
Reviewed-by: Richard Ipsum Reviewed-by: Pedro Alvarez
-rw-r--r--morphlib/remoteartifactcache.py4
-rw-r--r--morphlib/remoteartifactcache_tests.py5
2 files changed, 8 insertions, 1 deletions
diff --git a/morphlib/remoteartifactcache.py b/morphlib/remoteartifactcache.py
index 17f547f2..c2f88773 100644
--- a/morphlib/remoteartifactcache.py
+++ b/morphlib/remoteartifactcache.py
@@ -16,6 +16,7 @@
import cliapp
import logging
+import urllib
import urllib2
import urlparse
@@ -108,7 +109,8 @@ class RemoteArtifactCache(object):
if not server_url.endswith('/'):
server_url += '/'
return urlparse.urljoin(
- server_url, '/1.0/artifacts?filename=%s' % filename)
+ server_url, '/1.0/artifacts?filename=%s' %
+ urllib.quote(filename))
def __str__(self): # pragma: no cover
return self.server_url
diff --git a/morphlib/remoteartifactcache_tests.py b/morphlib/remoteartifactcache_tests.py
index 431731b9..dbb094a3 100644
--- a/morphlib/remoteartifactcache_tests.py
+++ b/morphlib/remoteartifactcache_tests.py
@@ -157,3 +157,8 @@ class RemoteArtifactCacheTests(unittest.TestCase):
self.runtime_artifact.source,
self.runtime_artifact.cache_key,
'non-existent-meta')
+
+ def test_escapes_pluses_in_request_urls(self):
+ returned_url = self.cache._request_url('gtk+')
+ correct_url = '%s/1.0/artifacts?filename=gtk%%2B' % self.server_url
+ self.assertEqual(returned_url, correct_url)