summaryrefslogtreecommitdiff
path: root/morphlib
diff options
context:
space:
mode:
Diffstat (limited to 'morphlib')
-rw-r--r--morphlib/morphologyfinder.py21
-rw-r--r--morphlib/morphologyfinder_tests.py16
-rw-r--r--morphlib/plugins/deploy_plugin.py5
-rw-r--r--morphlib/sysbranchdir.py4
4 files changed, 18 insertions, 28 deletions
diff --git a/morphlib/morphologyfinder.py b/morphlib/morphologyfinder.py
index affa0e97..87c0de1a 100644
--- a/morphlib/morphologyfinder.py
+++ b/morphlib/morphologyfinder.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2013 Codethink Limited
+# Copyright (C) 2013-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
@@ -34,38 +34,29 @@ class MorphologyFinder(object):
self.gitdir = gitdir
self.ref = ref
- def read_morphology(self, name):
+ def read_morphology(self, filename):
'''Return the un-parsed text of a morphology.
For the given morphology name, locate and return the contents
of the morphology as a string.
- Also returns a string describing where in the repository the
- morphology is located.
-
Parsing of this morphology into a form useful for manipulating
is handled by the MorphologyLoader class.
'''
- filename = '%s.morph' % name
- return self.gitdir.read_file(filename, self.ref), filename
+ return self.gitdir.read_file(filename, self.ref)
def list_morphologies(self):
- '''Return the names of all morphologies in the (repo, ref).
+ '''Return the filenames of all morphologies in the (repo, ref).
Finds all morphologies in the git directory at the specified
- ref. Morphology names are returned instead of filenames,
- so the implementation may change how morphologies are stored
- in git repositories.
+ ref.
'''
def is_morphology_path(path):
return path.endswith('.morph')
- def transform_path_to_name(path):
- return path[:-len('.morph')]
-
- return (transform_path_to_name(path)
+ return (path
for path in self.gitdir.list_files(self.ref)
if is_morphology_path(path))
diff --git a/morphlib/morphologyfinder_tests.py b/morphlib/morphologyfinder_tests.py
index ff83ccff..b07b2613 100644
--- a/morphlib/morphologyfinder_tests.py
+++ b/morphlib/morphologyfinder_tests.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2013 Codethink Limited
+# Copyright (C) 2013-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
@@ -54,13 +54,13 @@ class MorphologyFinderTests(unittest.TestCase):
gd = morphlib.gitdir.GitDirectory(self.dirname)
mf = morphlib.morphologyfinder.MorphologyFinder(gd, 'HEAD')
self.assertEqual(sorted(mf.list_morphologies()),
- ['bar', 'baz'])
+ ['bar.morph', 'baz.morph'])
def test_list_morphs_in_master(self):
gd = morphlib.gitdir.GitDirectory(self.dirname)
mf = morphlib.morphologyfinder.MorphologyFinder(gd, 'master')
self.assertEqual(sorted(mf.list_morphologies()),
- ['bar', 'baz'])
+ ['bar.morph', 'baz.morph'])
def test_list_morphs_raises_with_invalid_ref(self):
gd = morphlib.gitdir.GitDirectory(self.dirname)
@@ -72,7 +72,7 @@ class MorphologyFinderTests(unittest.TestCase):
gd = morphlib.gitdir.GitDirectory(self.dirname)
mf = morphlib.morphologyfinder.MorphologyFinder(gd)
self.assertEqual(sorted(mf.list_morphologies()),
- ['bar', 'baz', 'foo'])
+ ['bar.morph', 'baz.morph', 'foo.morph'])
def test_list_morphs_raises_no_worktree_no_ref(self):
gd = morphlib.gitdir.GitDirectory(self.mirror)
@@ -83,13 +83,13 @@ class MorphologyFinderTests(unittest.TestCase):
def test_read_morph_in_HEAD(self):
gd = morphlib.gitdir.GitDirectory(self.dirname)
mf = morphlib.morphologyfinder.MorphologyFinder(gd, 'HEAD')
- self.assertEqual(mf.read_morphology('bar')[0],
+ self.assertEqual(mf.read_morphology('bar.morph'),
"dummy morphology text")
def test_read_morph_in_master(self):
gd = morphlib.gitdir.GitDirectory(self.dirname)
mf = morphlib.morphologyfinder.MorphologyFinder(gd, 'master')
- self.assertEqual(mf.read_morphology('bar')[0],
+ self.assertEqual(mf.read_morphology('bar.morph'),
"dummy morphology text")
def test_read_morph_raises_with_invalid_ref(self):
@@ -101,11 +101,11 @@ class MorphologyFinderTests(unittest.TestCase):
def test_read_morph_in_work_tree(self):
gd = morphlib.gitdir.GitDirectory(self.dirname)
mf = morphlib.morphologyfinder.MorphologyFinder(gd)
- self.assertEqual(mf.read_morphology('foo')[0],
+ self.assertEqual(mf.read_morphology('foo.morph'),
"altered morphology text")
def test_read_morph_raises_no_worktree_no_ref(self):
gd = morphlib.gitdir.GitDirectory(self.mirror)
mf = morphlib.morphologyfinder.MorphologyFinder(gd)
self.assertRaises(morphlib.gitdir.NoWorkingTreeError,
- mf.read_morphology, 'bar')
+ mf.read_morphology, 'bar.morph')
diff --git a/morphlib/plugins/deploy_plugin.py b/morphlib/plugins/deploy_plugin.py
index 6fc0998c..7c009071 100644
--- a/morphlib/plugins/deploy_plugin.py
+++ b/morphlib/plugins/deploy_plugin.py
@@ -292,11 +292,10 @@ class DeployPlugin(cliapp.Plugin):
name = morphlib.git.get_user_name(self.app.runcmd)
email = morphlib.git.get_user_email(self.app.runcmd)
build_ref_prefix = self.app.settings['build-ref-prefix']
-
root_repo_dir = morphlib.gitdir.GitDirectory(
sb.get_git_directory_name(sb.root_repository_url))
- mf = morphlib.morphologyfinder.MorphologyFinder(root_repo_dir)
- cluster_text, cluster_filename = mf.read_morphology(cluster_name)
+ cluster_filename = cluster_name + '.morph'
+ cluster_text = root_repo_dir.read_file(cluster_filename)
cluster_morphology = loader.load_from_string(cluster_text,
filename=cluster_filename)
diff --git a/morphlib/sysbranchdir.py b/morphlib/sysbranchdir.py
index 9d96e974..ee6a3cc7 100644
--- a/morphlib/sysbranchdir.py
+++ b/morphlib/sysbranchdir.py
@@ -176,8 +176,8 @@ class SystemBranchDirectory(object):
gd_name = self.get_git_directory_name(self.root_repository_url)
gd = morphlib.gitdir.GitDirectory(gd_name)
mf = morphlib.morphologyfinder.MorphologyFinder(gd)
- for morph in mf.list_morphologies():
- text, filename = mf.read_morphology(morph)
+ for filename in mf.list_morphologies():
+ text = mf.read_morphology(filename)
m = loader.load_from_string(text, filename=filename)
m.repo_url = self.root_repository_url
m.ref = self.system_branch_name