Add event name validation
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Wed, 12 Nov 2014 07:47:59 +0000 (02:47 -0500)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Wed, 12 Nov 2014 07:47:59 +0000 (02:47 -0500)
barectf/cli.py

index acb440103437e627812ecb8ce16334c13a41e4cf..74757594e92eceeac367430cd61e086ea4c82cba 100644 (file)
@@ -372,7 +372,6 @@ class BarectfCodeGenerator:
         except RuntimeError as e:
             _perror('stream {}: "id": {}'.format(sid, format(e)))
 
-
         # timestamp must exist, be an unsigned integer and be mapped to a valid clock
         if 'timestamp' not in fields:
             _perror('stream {}: event header: missing "timestamp" field'.format(sid))
@@ -431,20 +430,32 @@ class BarectfCodeGenerator:
         except RuntimeError as e:
             _perror('stream {}: event {}: fields: {}'.format(sid, eid, e))
 
+    def _validate_event(self, stream, event):
+        # name must be a compatible C identifier
+        if not re.match(r'^[a-zA-Z_][a-zA-Z0-9_]*$', event.name):
+            _perror('stream {}: event {}: malformed name'.format(stream.id,
+                                                                 event.id))
+
+        self._validate_event_context(stream, event)
+        self._validate_event_fields(stream, event)
+
+    def _validate_stream(self, stream):
+        self._validate_event_header(stream)
+        self._validate_packet_context(stream)
+        self._validate_stream_event_context(stream)
+
+        # event stuff
+        for event in stream.events:
+            self._validate_event(stream, event)
+
     def _validate_all_scopes(self):
         # packet header
         self._validate_packet_header(self._doc.trace.packet_header)
 
         # stream stuff
         for stream in self._doc.streams.values():
-            self._validate_event_header(stream)
-            self._validate_packet_context(stream)
-            self._validate_stream_event_context(stream)
-
-            # event stuff
-            for event in stream.events:
-                self._validate_event_context(stream, event)
-                self._validate_event_fields(stream, event)
+            self._validate_stream(stream)
+
 
     def _validate_metadata(self):
         self._validate_all_scopes()
This page took 0.024234 seconds and 4 git commands to generate.