This is an automated email from the ASF dual-hosted git repository. not-in-ldap pushed a commit to branch validation in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 94570a3c4338d344e9d3ca0759c61a6b2d3ba1c1 Author: Tristan Maat <[email protected]> AuthorDate: Wed Sep 6 17:50:24 2017 +0100 Add element node validations --- buildstream/_loader.py | 9 +++++++++ tests/loader/basics.py | 12 ++++++++++++ tests/loader/basics/onefile/elements/invalidkey.bst | 3 +++ tests/loader/basics/onefile/elements/invalidsourcekey.bst | 6 ++++++ 4 files changed, 30 insertions(+) diff --git a/buildstream/_loader.py b/buildstream/_loader.py index 72b7ed3..b7a1ccb 100644 --- a/buildstream/_loader.py +++ b/buildstream/_loader.py @@ -211,6 +211,15 @@ class LoadElement(): # These are shared with the owning Loader object self.basedir = basedir + # Ensure the root node is valid + _yaml.validate_node(self.data, [ + 'kind', 'depends', 'sources', + 'variables', 'environment', + 'config', 'public', 'description', + 'arches', 'variants', 'host-arches', + 'choice' + ]) + # Process arch conditionals resolve_arch(self.data, self.host_arch, self.target_arch) diff --git a/tests/loader/basics.py b/tests/loader/basics.py index 4830702..99f5edb 100644 --- a/tests/loader/basics.py +++ b/tests/loader/basics.py @@ -72,3 +72,15 @@ def test_fail_fullpath_target(datafiles): loader = Loader(basedir, fullpath, None, None, None, []) assert (exc.value.reason == LoadErrorReason.INVALID_DATA) + + [email protected](os.path.join(DATA_DIR, 'onefile')) +def test_invalid_key(datafiles): + + basedir = os.path.join(datafiles.dirname, datafiles.basename) + loader = Loader(basedir, 'elements/invalidkey.bst', None, None, None, []) + + with pytest.raises(LoadError) as exc: + element = loader.load() + + assert (exc.value.reason == LoadErrorReason.INVALID_YAML) diff --git a/tests/loader/basics/onefile/elements/invalidkey.bst b/tests/loader/basics/onefile/elements/invalidkey.bst new file mode 100644 index 0000000..5674ab7 --- /dev/null +++ b/tests/loader/basics/onefile/elements/invalidkey.bst @@ -0,0 +1,3 @@ +kind: pony +description: This is the pony +wings: blue diff --git a/tests/loader/basics/onefile/elements/invalidsourcekey.bst b/tests/loader/basics/onefile/elements/invalidsourcekey.bst new file mode 100644 index 0000000..5677af3 --- /dev/null +++ b/tests/loader/basics/onefile/elements/invalidsourcekey.bst @@ -0,0 +1,6 @@ +kind: pony +description: This is the pony +sources: + - kind: ponyland + url: ptp://pw.ponies.p/ + weather: great
