parse_hwdb: bail with an error if no matches or groups are detected
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 8 Oct 2019 12:21:26 +0000 (14:21 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 10 Oct 2019 07:48:23 +0000 (09:48 +0200)
pyparsing sometimes changes behaviour and stops giving matches. This should
allow us to detect such scenario. With this change, parse_hwdb fails with
pyparsing 2.4 on F31.

hwdb.d/parse_hwdb.py

index da0bca5..78c7f9b 100755 (executable)
@@ -224,11 +224,13 @@ def check_properties(groups):
                 check_one_keycode(prop, parsed.VALUE)
 
 def print_summary(fname, groups):
+    n_matches = sum(len(matches) for matches, props in groups)
+    n_props = sum(len(props) for matches, props in groups)
     print('{}: {} match groups, {} matches, {} properties'
-          .format(fname,
-                  len(groups),
-                  sum(len(matches) for matches, props in groups),
-                  sum(len(props) for matches, props in groups)))
+          .format(fname, len(groups), n_matches, n_props))
+
+    if n_matches == 0 or n_props == 0:
+        error('{}: no matches or props'.format(fname))
 
 if __name__ == '__main__':
     args = sys.argv[1:] or glob.glob(os.path.dirname(sys.argv[0]) + '/[67]0-*.hwdb')