summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--morphlib/morphology.py6
-rw-r--r--morphlib/morphology_tests.py14
2 files changed, 20 insertions, 0 deletions
diff --git a/morphlib/morphology.py b/morphlib/morphology.py
index 86658fb8..903df472 100644
--- a/morphlib/morphology.py
+++ b/morphlib/morphology.py
@@ -51,6 +51,8 @@ class Morphology(object):
self._validate_stratum()
for source in self.sources.itervalues():
source['repo'] = self._join_with_baseurl(source['repo'])
+ elif self.kind == 'system':
+ pass
else:
raise self._error('kind must be chunk or stratum, not %s' %
self.kind)
@@ -142,6 +144,10 @@ class Morphology(object):
def install_commands(self):
return self._dict.get('install-commands', [])
+ @property
+ def strata(self):
+ return self._dict.get('strata', [])
+
def _join_with_baseurl(self, url):
is_relative = (':' not in url or
'/' not in url or
diff --git a/morphlib/morphology_tests.py b/morphlib/morphology_tests.py
index d7e256dd..2982bb27 100644
--- a/morphlib/morphology_tests.py
+++ b/morphlib/morphology_tests.py
@@ -374,6 +374,20 @@ class MorphologyTests(unittest.TestCase):
self.assertEqual(morph.kind, 'stratum')
self.assertEqual(morph.filename, 'mockfile')
+ def test_accepts_valid_system_morphology(self):
+ morph = morphlib.morphology.Morphology(
+ MockFile('''
+ {
+ "name": "hello",
+ "kind": "system",
+ "strata": [
+ "foo",
+ "bar"
+ ]
+ }'''))
+ self.assertEqual(morph.kind, 'system')
+ self.assertEqual(morph.strata, ['foo', 'bar'])
+
class StratumRepoTests(unittest.TestCase):