summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Jardón <javier.jardon@codethink.co.uk>2015-02-27 15:48:13 +0000
committerJavier Jardón <javier.jardon@codethink.co.uk>2015-02-27 18:42:52 +0000
commit5fa101c0a1a817a58fc88306b028fb61d5f1589b (patch)
tree601844217c6b33f00460bcc48291210f8616dae6
parent174a0d7c67f15e9ce6c34e8f3e7d6e0d9acd3f6e (diff)
downloadmorph-5fa101c0a1a817a58fc88306b028fb61d5f1589b.tar.gz
morphlib/sourceresolver.py: Add _get_file_contents()
And make _get_morphology() use it
-rw-r--r--morphlib/sourceresolver.py35
1 files changed, 23 insertions, 12 deletions
diff --git a/morphlib/sourceresolver.py b/morphlib/sourceresolver.py
index dd020803..cd183ee0 100644
--- a/morphlib/sourceresolver.py
+++ b/morphlib/sourceresolver.py
@@ -261,18 +261,13 @@ class SourceResolver(object):
return morph
- def _get_morphology(self, reponame, sha1, filename):
- '''Read the morphology at the specified location.
+ def _get_file_contents(self, reponame, sha1, filename): # pragma: no cover
+ '''Read the file at the specified location.
Returns None if the file does not exist in the specified commit.
'''
- key = (reponame, sha1, filename)
- if key in self._resolved_morphologies:
- return self._resolved_morphologies[key]
-
- loader = morphlib.morphloader.MorphologyLoader()
- morph = None
+ text = None
if reponame == self._definitions_repo and \
sha1 == self._definitions_absref: # pragma: no cover
@@ -280,11 +275,27 @@ class SourceResolver(object):
# we can quickly read definitions files from.
defs_filename = os.path.join(self._definitions_checkout_dir,
filename)
- morph = self._get_morphology_from_definitions(loader,
- defs_filename)
+ text = self._get_file_contents_from_definitions(defs_filename)
else:
- morph = self._get_morphology_from_repo(loader, reponame, sha1,
- filename)
+ text = self._get_file_contents_from_repo(reponame, sha1, filename)
+
+ return text
+
+ def _get_morphology(self, reponame, sha1, filename): # pragma: no cover
+ '''Read the morphology at the specified location.
+
+ Returns None if the file does not exist in the specified commit.
+
+ '''
+ key = (reponame, sha1, filename)
+ if key in self._resolved_morphologies:
+ return self._resolved_morphologies[key]
+
+ loader = morphlib.morphloader.MorphologyLoader()
+ morph = None
+
+ text = self._get_file_contents(reponame, sha1, filename)
+ morph = loader.load_from_string(text)
if morph is None:
return None