summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 b1544b03..004ba86e 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 0b1a183b..ef81506f 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({