Fix: config: check for node type before checking props
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 11 Mar 2016 18:38:11 +0000 (13:38 -0500)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Thu, 17 Mar 2016 06:44:26 +0000 (02:44 -0400)
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
barectf/config.py

index eb816fbce724b7b378d2137d95fccb2dc832de8b..80615b0023ae7aad2f3e91e4e7a9ed3a5ba92cc6 100644 (file)
@@ -1722,6 +1722,10 @@ class _YamlConfigParser:
     def _create_clock(self, node):
         # create clock object
         clock = metadata.Clock()
+
+        if not _is_assoc_array_prop(env_node):
+            raise ConfigError('clock objects must be associative arrays')
+
         known_props = [
             'uuid',
             'description',
@@ -1933,6 +1937,10 @@ class _YamlConfigParser:
         # create trace object
         trace = metadata.Trace()
         trace_node = metadata_node['trace']
+
+        if not _is_assoc_array_prop(trace_node):
+            raise ConfigError('"trace" property (metadata) must be an associative array')
+
         unk_prop = _get_first_unknown_prop(trace_node, [
             'byte-order',
             'uuid',
@@ -1981,6 +1989,10 @@ class _YamlConfigParser:
 
     def _create_event(self, event_node):
         event = metadata.Event()
+
+        if not _is_assoc_array_prop(event_node):
+            raise ConfigError('event objects must be associative arrays')
+
         unk_prop = _get_first_unknown_prop(event_node, [
             'log-level',
             'context-type',
@@ -1990,9 +2002,6 @@ class _YamlConfigParser:
         if unk_prop:
             raise ConfigError('unknown event object property: "{}"'.format(unk_prop))
 
-        if not _is_assoc_array_prop(event_node):
-            raise ConfigError('event objects must be associative arrays')
-
         if 'log-level' in event_node:
             ll = self._lookup_log_level(event_node['log-level'])
 
@@ -2023,6 +2032,10 @@ class _YamlConfigParser:
 
     def _create_stream(self, stream_node):
         stream = metadata.Stream()
+
+        if not _is_assoc_array_prop(stream_node):
+            raise ConfigError('stream objects must be associative arrays')
+
         unk_prop = _get_first_unknown_prop(stream_node, [
             'packet-context-type',
             'event-header-type',
@@ -2033,9 +2046,6 @@ class _YamlConfigParser:
         if unk_prop:
             raise ConfigError('unknown stream object property: "{}"'.format(unk_prop))
 
-        if not _is_assoc_array_prop(stream_node):
-            raise ConfigError('stream objects must be associative arrays')
-
         if 'packet-context-type' in stream_node:
             try:
                 t = self._create_type(stream_node['packet-context-type'])
@@ -2121,6 +2131,9 @@ class _YamlConfigParser:
         if 'metadata' not in root:
             raise ConfigError('missing "metadata" property (root)')
 
+        if not _is_assoc_array_prop(metadata_node):
+            raise ConfigError('"metadata" property (root) must be an associative array')
+
         metadata_node = root['metadata']
         unk_prop = _get_first_unknown_prop(metadata_node, [
             'type-aliases',
@@ -2134,9 +2147,6 @@ class _YamlConfigParser:
         if unk_prop:
             raise ConfigError('unknown metadata property: "{}"'.format(unk_prop))
 
-        if not _is_assoc_array_prop(metadata_node):
-            raise ConfigError('"metadata" property (root) must be an associative array')
-
         self._set_byte_order(metadata_node)
         self._register_clocks(metadata_node)
         meta.clocks = self._clocks
This page took 0.028863 seconds and 4 git commands to generate.