ldcheck.py

changeset 62
f0a6bf48b05e
parent 54
0c686d10eb49
child 63
8949af6a4279
--- a/ldcheck.py	Wed Jun 05 00:33:50 2019 +0300
+++ b/ldcheck.py	Sat Jun 08 01:32:25 2019 +0300
@@ -63,18 +63,33 @@
         ]
 
 import argparse
+
+def default_problem_message(message):
+    if callable(message):
+        import inspect
+        spec = inspect.getfullargspec(message)
+        args = {}
+        assert not spec.varargs and not spec.varkw
+        for argname in spec.args + spec.kwonlyargs:
+            args[argname] = '<' + argname.replace('_', ' ') + '>'
+        return message(**args)
+    else:
+        return message
+
 class ListTestSuiteAction(argparse.Action):
     def __init__(self, option_strings, dest, nargs = None, **kwargs):
         super().__init__(option_strings, dest, nargs = 0, **kwargs)
     def __call__(self, *args, **kwargs):
-        from testsuite import load_tests
+        from testsuite import load_tests, all_warning_types
         from sys import exit
         from re import sub
         test_suite = load_tests()
-        for test_name in sorted(test_suite['tests'].keys()):
-            test_function = test_suite['tests'][test_name]
-            help = sub(r'\s+', ' ', test_function.__doc__ or '').strip()
-            print(test_name + ': ' + help)
+        for warning_type in sorted(all_warning_types(test_suite), key = lambda k: k.name):
+            print(str.format('{name}: {severity}: "{message}"',
+                name = warning_type.name,
+                severity = warning_type.severity,
+                message = default_problem_message(warning_type.message),
+            ))
         exit(0)
 
 if __name__ == '__main__':

mercurial