summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--morphlib/morph2.py1
-rw-r--r--morphlib/morphologyfactory.py4
-rw-r--r--morphlib/morphologyfactory_tests.py9
-rwxr-xr-xtests.as-root/arm-system-writes-kernel.script1
-rwxr-xr-xtests.as-root/setup1
-rwxr-xr-xtests.as-root/system-overlap.script1
-rwxr-xr-xtests.branching/setup1
-rwxr-xr-xtests/setup1
8 files changed, 19 insertions, 0 deletions
diff --git a/morphlib/morph2.py b/morphlib/morph2.py
index 394c27c3..b1c027b9 100644
--- a/morphlib/morph2.py
+++ b/morphlib/morph2.py
@@ -39,6 +39,7 @@ class Morphology(object):
('build-depends', None),
('build-system', 'manual'),
('arch', None),
+ ('system-kind', None),
]
def __init__(self, text):
diff --git a/morphlib/morphologyfactory.py b/morphlib/morphologyfactory.py
index 4f9f7522..925829e9 100644
--- a/morphlib/morphologyfactory.py
+++ b/morphlib/morphologyfactory.py
@@ -107,6 +107,10 @@ class MorphologyFactory(object):
'(arch is a mandatory field)' %
filename)
+ if not morphology['system-kind']:
+ raise morphlib.Error('No system-kind defined in system %s '
+ '(it is a mandatory field)' % filename)
+
name = morphology['name']
if morphology['arch'] == 'arm':
morphology.builds_artifacts = [name + '-kernel', name + '-rootfs']
diff --git a/morphlib/morphologyfactory_tests.py b/morphlib/morphologyfactory_tests.py
index 91768843..cc45bb21 100644
--- a/morphlib/morphologyfactory_tests.py
+++ b/morphlib/morphologyfactory_tests.py
@@ -16,6 +16,7 @@
import unittest
+import morphlib
from morphlib.morph2 import Morphology
from morphlib.morphologyfactory import (MorphologyFactory,
AutodetectError,
@@ -59,17 +60,20 @@ class FakeLocalRepo(object):
'system.morph': '''{
"name": "foo-system",
"kind": "system",
+ "system-kind": "%(system_kind)s",
"arch": "%(arch)s"
}''',
}
def __init__(self):
self.arch = 'unknown'
+ self.system_kind = 'unknown'
def cat(self, sha1, filename):
if filename in self.morphologies:
values = {
'arch': self.arch,
+ 'system_kind': self.system_kind,
}
return self.morphologies[filename] % values
elif filename.endswith('.morph'):
@@ -221,3 +225,8 @@ class MorphologyFactoryTests(unittest.TestCase):
morph = self.mf.get_morphology('reponame', 'sha1', 'system.morph')
self.assertEqual(morph.needs_artifact_metadata_cached, False)
+ def test_fails_if_system_does_not_define_system_kind(self):
+ self.lr.system_kind = ''
+ self.assertRaises(morphlib.Error, self.mf.get_morphology,
+ 'reponame', 'sha1', 'system.morph')
+
diff --git a/tests.as-root/arm-system-writes-kernel.script b/tests.as-root/arm-system-writes-kernel.script
index 2a837af4..b9ac95b3 100755
--- a/tests.as-root/arm-system-writes-kernel.script
+++ b/tests.as-root/arm-system-writes-kernel.script
@@ -30,6 +30,7 @@ cat <<EOF >arm-system.morph
{
"name": "arm-system",
"kind": "system",
+ "system-kind": "dummy",
"arch": "arm",
"disk-size": "1G",
"strata": [
diff --git a/tests.as-root/setup b/tests.as-root/setup
index b9c342fc..542fb36f 100755
--- a/tests.as-root/setup
+++ b/tests.as-root/setup
@@ -106,6 +106,7 @@ cat <<EOF > hello-system.morph
{
"name": "hello-system",
"kind": "system",
+ "system-kind": "dummy",
"arch": "$(uname -m)",
"disk-size": "1G",
"strata": [
diff --git a/tests.as-root/system-overlap.script b/tests.as-root/system-overlap.script
index 8bef4050..1c2e1180 100755
--- a/tests.as-root/system-overlap.script
+++ b/tests.as-root/system-overlap.script
@@ -30,6 +30,7 @@ cat <<EOF >overlap-system.morph
{
"name": "overlap-system",
"kind": "system",
+ "system-kind": "dummy",
"arch": "$(uname -m)",
"disk-size": "1G",
"strata": [
diff --git a/tests.branching/setup b/tests.branching/setup
index 3b9e7e7b..24627bce 100755
--- a/tests.branching/setup
+++ b/tests.branching/setup
@@ -48,6 +48,7 @@ cat <<EOF > "$DATADIR/morphs/hello-system.morph"
{
"name": "hello-system",
"kind": "system",
+ "system-kind": "dummy",
"disk-size": "1G",
"strata": [
"hello-stratum"
diff --git a/tests/setup b/tests/setup
index 179502f8..ce187065 100755
--- a/tests/setup
+++ b/tests/setup
@@ -106,6 +106,7 @@ cat <<EOF > hello-system.morph
{
"name": "hello-system",
"kind": "system",
+ "system-kind": "dummy",
"disk-size": "1G",
"strata": [
"hello-stratum"