From 88abfbd8a29c5056eb0f089463cc28813bb172ad Mon Sep 17 00:00:00 2001 From: Benjamin Schubert Date: Fri, 14 Jun 2019 10:23:42 +0100 Subject: _yaml: Never create base 'Node' directly We shouldn't have to create normal nodes ever. Let's ensure we don't --- src/buildstream/_yaml.pyx | 11 +++++++---- src/buildstream/testing/_sourcetests/track.py | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/buildstream/_yaml.pyx b/src/buildstream/_yaml.pyx index e69ff8ee9..6a0080b37 100644 --- a/src/buildstream/_yaml.pyx +++ b/src/buildstream/_yaml.pyx @@ -521,13 +521,16 @@ cdef class Representer: cdef Node _create_node(object value, int file_index, int line, int column): - if type(value) in [bool, str, type(None), int]: + cdef type_value = type(value) + + if type_value in [bool, str, type(None), int]: return ScalarNode(value, file_index, line, column) - elif type(value) is dict: + elif type_value is dict: return MappingNode(value, file_index, line, column) - elif type(value) is list: + elif type_value is list: return SequenceNode(value, file_index, line, column) - return Node(value, file_index, line, column) + raise ValueError( + "Node values can only be 'list', 'dict', 'bool', 'str', 'int' or None. Not {}".format(type_value)) # Loads a dictionary from some YAML diff --git a/src/buildstream/testing/_sourcetests/track.py b/src/buildstream/testing/_sourcetests/track.py index 08173e79b..58679e9f1 100644 --- a/src/buildstream/testing/_sourcetests/track.py +++ b/src/buildstream/testing/_sourcetests/track.py @@ -327,7 +327,7 @@ def test_track_include(cli, tmpdir, datafiles, ref_storage, kind): # Get the first source from the sources list new_source = sources_list.mapping_at(0) assert 'ref' in new_source - assert ref == new_source.get_scalar('ref').as_str() + assert ref == new_source.get_str('ref') @pytest.mark.datafiles(DATA_DIR) -- cgit v1.2.1