diff options
-rw-r--r-- | morphlib/morph2.py | 1 | ||||
-rw-r--r-- | morphlib/morphologyfactory.py | 4 | ||||
-rw-r--r-- | morphlib/morphologyfactory_tests.py | 9 | ||||
-rwxr-xr-x | tests.as-root/arm-system-writes-kernel.script | 1 | ||||
-rwxr-xr-x | tests.as-root/setup | 1 | ||||
-rwxr-xr-x | tests.as-root/system-overlap.script | 1 | ||||
-rwxr-xr-x | tests.branching/setup | 1 | ||||
-rwxr-xr-x | tests/setup | 1 |
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" |