summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2014-08-26 12:53:33 (GMT)
committerRichard Maw <richard.maw@codethink.co.uk>2014-08-26 12:53:33 (GMT)
commit8c9aea626d1308a876d145d379ac5f23905fa9b4 (patch)
treeff15a510e42ca90d42d9c3f07897024262df4fe8
parent32936bd5fa1d27260faa8074a80b64287fec90c7 (diff)
parente86a598553e96dab2dc4111aedefcb6b0a60c50d (diff)
downloadmorph-8c9aea626d1308a876d145d379ac5f23905fa9b4.tar.gz
Merge remote-tracking branch 'origin/baserock/richardmaw/bugfix/http-fail'
Reviewed-by: Francisco Redondo Marchena Reviewed-by: Sam Thursfield
-rw-r--r--morphlib/remoterepocache.py8
-rw-r--r--morphlib/remoterepocache_tests.py9
2 files changed, 12 insertions, 5 deletions
diff --git a/morphlib/remoterepocache.py b/morphlib/remoterepocache.py
index b1544b0..004ba86 100644
--- a/morphlib/remoterepocache.py
+++ b/morphlib/remoterepocache.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2013 Codethink Limited
+# Copyright (C) 2012-2014 Codethink Limited
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -63,9 +63,11 @@ class RemoteRepoCache(object):
repo_url = self._resolver.pull_url(repo_name)
try:
return self._cat_file_for_repo_url(repo_url, ref, filename)
- except BaseException, e:
+ except urllib2.HTTPError as e:
logging.error('Caught exception: %s' % str(e))
- raise CatFileError(repo_name, ref, filename)
+ if e.code == 404:
+ raise CatFileError(repo_name, ref, filename)
+ raise # pragma: no cover
def ls_tree(self, repo_name, ref):
repo_url = self._resolver.pull_url(repo_name)
diff --git a/morphlib/remoterepocache_tests.py b/morphlib/remoterepocache_tests.py
index 0b1a183..ef81506 100644
--- a/morphlib/remoterepocache_tests.py
+++ b/morphlib/remoterepocache_tests.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2013 Codethink Limited
+# Copyright (C) 2012-2014 Codethink Limited
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -16,6 +16,7 @@
import json
import unittest
+import urllib2
import morphlib
@@ -26,7 +27,11 @@ class RemoteRepoCacheTests(unittest.TestCase):
return self.sha1s[repo_url][ref]
def _cat_file_for_repo_url(self, repo_url, sha1, filename):
- return self.files[repo_url][sha1][filename]
+ try:
+ return self.files[repo_url][sha1][filename]
+ except KeyError:
+ raise urllib2.HTTPError(url='', code=404, msg='Not found',
+ hdrs={}, fp=None)
def _ls_tree_for_repo_url(self, repo_url, sha1):
return json.dumps({