diff options
Diffstat (limited to 'morphlib/morphloader_tests.py')
-rw-r--r-- | morphlib/morphloader_tests.py | 98 |
1 files changed, 90 insertions, 8 deletions
diff --git a/morphlib/morphloader_tests.py b/morphlib/morphloader_tests.py index db22264f..b5d3f568 100644 --- a/morphlib/morphloader_tests.py +++ b/morphlib/morphloader_tests.py @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2015 Codethink Limited +# Copyright (C) 2013-2016 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 @@ -208,7 +208,42 @@ build-system: manual self.assertRaises( morphlib.morphloader.InvalidFieldError, self.loader.validate, m) - def test_validate_requires_chunk_refs_in_stratum_to_be_strings(self): + def test_validate_requires_chunk_repos_to_exist(self): + m = morphlib.morphology.Morphology({ + 'kind': 'stratum', + 'name': 'foo', + 'build-depends': [], + 'chunks': [ + { + 'name': 'chunk', + 'ref': 'master', + 'build-depends': [] + } + ] + }) + with self.assertRaises( + morphlib.morphloader.MissingFieldError): + self.loader.validate(m) + + def test_validate_requires_chunk_repos_in_stratum_to_be_strings(self): + m = morphlib.morphology.Morphology({ + 'kind': 'stratum', + 'name': 'foo', + 'build-depends': [], + 'chunks': [ + { + 'name': 'chunk', + 'repo': 1, + 'ref': 'master', + 'build-depends': [] + } + ] + }) + with self.assertRaises( + morphlib.morphloader.InvalidStringError): + self.loader.validate(m) + + def test_validate_requires_chunk_refs_to_exist(self): m = morphlib.morphology.Morphology({ 'kind': 'stratum', 'name': 'foo', @@ -217,33 +252,78 @@ build-system: manual { 'name': 'chunk', 'repo': 'test:repo', - 'ref': 1, 'build-depends': [] } ] }) with self.assertRaises( - morphlib.morphloader.ChunkSpecRefNotStringError): + morphlib.morphloader.MissingFieldError): self.loader.validate(m) - def test_fails_to_validate_stratum_with_empty_refs_for_a_chunk(self): + def test_validate_requires_chunk_refs_in_stratum_to_be_strings(self): m = morphlib.morphology.Morphology({ 'kind': 'stratum', 'name': 'foo', 'build-depends': [], - 'chunks' : [ + 'chunks': [ { 'name': 'chunk', 'repo': 'test:repo', - 'ref': None, + 'ref': 1, 'build-depends': [] } ] }) with self.assertRaises( - morphlib.morphloader.EmptyRefError): + morphlib.morphloader.InvalidStringError): self.loader.validate(m) + def test_fails_to_validate_stratum_with_a_missing_url(self): + m = morphlib.morphology.Morphology({ + 'kind': 'stratum', + 'name': 'foo', + 'build-depends': [], + 'chunks': [ + { + 'name': 'chunk', + 'repo': 'test:repo', + 'ref': 'master', + 'build-system': 'manual', + 'build-depends': [], + 'submodules': + { + 'foolib': {} + } + } + ] + }) + self.assertRaises( + morphlib.morphloader.MissingFieldError, self.loader.validate, m) + + def test_fails_to_validate_stratum_with_no_dict_submodules(self): + m = morphlib.morphology.Morphology({ + 'kind': 'stratum', + 'name': 'foo', + 'build-depends': [], + 'chunks': [ + { + 'name': 'chunk', + 'repo': 'test:repo', + 'ref': 'master', + 'build-system': 'manual', + 'build-depends': [], + 'submodules': + [ + { + 'foolib': {} + } + ] + } + ] + }) + self.assertRaises( + morphlib.morphloader.NotADictionaryError, self.loader.validate, m) + def test_fails_to_validate_stratum_which_build_depends_on_self(self): text = '''\ name: bad-stratum @@ -567,6 +647,7 @@ build-system: manual 'pre-strip-commands': None, 'post-strip-commands': None, + 'submodules': {}, 'products': [], 'system-integration': [], 'devices': [], @@ -606,6 +687,7 @@ build-system: manual "morph": "bar", 'build-mode': 'bootstrap', 'build-depends': [], + 'submodules': {}, 'prefix': '/usr', }, ], |