diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2013-11-04 14:48:55 +0000 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2013-11-04 14:48:55 +0000 |
commit | f92546e1179792512134ee51134db1107b7075e0 (patch) | |
tree | 0b264e98885e72cc9f036b138b802e372705551f /morphlib | |
parent | 6a1d074bfd30d5d24faf02725542ec87509c310a (diff) | |
download | morph-f92546e1179792512134ee51134db1107b7075e0.tar.gz |
Fix RemoteArtifactCache to quote filenames in URLs
This will allow fetching of gtk+ artifacts.
Diffstat (limited to 'morphlib')
-rw-r--r-- | morphlib/remoteartifactcache.py | 4 | ||||
-rw-r--r-- | morphlib/remoteartifactcache_tests.py | 5 |
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) |