diff options
author | Benjamin Schubert <ben.c.schubert@gmail.com> | 2019-06-11 10:48:23 +0100 |
---|---|---|
committer | Benjamin Schubert <ben.c.schubert@gmail.com> | 2019-06-13 16:04:31 +0100 |
commit | a14c8c827128c7a3213955fde48ca8961099dab8 (patch) | |
tree | 796a86d590934d71061d05a01bc8b5122a17f89c | |
parent | 7006c82d0719c8ec079f891801b5010fe6576eb4 (diff) | |
download | buildstream-a14c8c827128c7a3213955fde48ca8961099dab8.tar.gz |
_yaml: Remove use of expected_type=None in node_get
-rw-r--r-- | src/buildstream/_includes.py | 20 | ||||
-rw-r--r-- | tests/frontend/cross_junction_workspace.py | 3 | ||||
-rw-r--r-- | tests/frontend/workspace.py | 1 |
3 files changed, 11 insertions, 13 deletions
diff --git a/src/buildstream/_includes.py b/src/buildstream/_includes.py index f792b7716..e29e769cf 100644 --- a/src/buildstream/_includes.py +++ b/src/buildstream/_includes.py @@ -35,16 +35,18 @@ class Includes: if current_loader is None: current_loader = self._loader - includes = _yaml.node_get(node, None, '(@)', default_value=None) - if isinstance(includes, str): - includes = [includes] + try: + includes = node.get_scalar('(@)', default=None).as_str() + if includes is not None: + includes = [includes] + except LoadError: + try: + includes = _yaml.node_get(node, list, '(@)') + except LoadError: + provenance = _yaml.node_get_provenance(node, key='(@)') + raise LoadError(LoadErrorReason.INVALID_DATA, + "{}: {} must either be list or str".format(provenance, _yaml.node_sanitize(node))) - if not isinstance(includes, list) and includes is not None: - provenance = _yaml.node_get_provenance(node, key='(@)') - raise LoadError(LoadErrorReason.INVALID_DATA, - "{}: {} must either be list or str".format(provenance, includes)) - - include_provenance = None if includes: include_provenance = _yaml.node_get_provenance(node, key='(@)') _yaml.node_del(node, '(@)') diff --git a/tests/frontend/cross_junction_workspace.py b/tests/frontend/cross_junction_workspace.py index a7dd940fb..34b5f5c9f 100644 --- a/tests/frontend/cross_junction_workspace.py +++ b/tests/frontend/cross_junction_workspace.py @@ -75,7 +75,6 @@ def test_list_cross_junction(cli, tmpdir): result.assert_success() loaded = _yaml.load_data(result.output) - assert isinstance(_yaml.node_get(loaded, None, 'workspaces'), list) workspaces = _yaml.node_get(loaded, list, 'workspaces') assert len(workspaces) == 1 assert 'element' in workspaces[0] @@ -97,7 +96,6 @@ def test_close_cross_junction(cli, tmpdir): result.assert_success() loaded = _yaml.load_data(result.output) - assert isinstance(_yaml.node_get(loaded, None, 'workspaces'), list) workspaces = _yaml.node_get(loaded, list, 'workspaces') assert not workspaces @@ -116,7 +114,6 @@ def test_close_all_cross_junction(cli, tmpdir): result.assert_success() loaded = _yaml.load_data(result.output) - assert isinstance(_yaml.node_get(loaded, None, 'workspaces'), list) workspaces = _yaml.node_get(loaded, list, 'workspaces') assert not workspaces diff --git a/tests/frontend/workspace.py b/tests/frontend/workspace.py index f23e0861e..aabe92343 100644 --- a/tests/frontend/workspace.py +++ b/tests/frontend/workspace.py @@ -608,7 +608,6 @@ def test_list(cli, tmpdir, datafiles): result.assert_success() loaded = _yaml.load_data(result.output) - assert isinstance(_yaml.node_get(loaded, None, 'workspaces'), list) workspaces = _yaml.node_get(loaded, list, 'workspaces') assert len(workspaces) == 1 |