testsuite.py

changeset 63
8949af6a4279
parent 62
f0a6bf48b05e
child 64
1c0884f5506e
equal deleted inserted replaced
62:f0a6bf48b05e 63:8949af6a4279
15 return Problem( 15 return Problem(
16 problem_class = self, 16 problem_class = self,
17 bad_object = bad_object, 17 bad_object = bad_object,
18 **args, 18 **args,
19 ) 19 )
20 def placeholder_message(self):
21 if callable(self.message):
22 import inspect
23 spec = inspect.getfullargspec(self.message)
24 args = {}
25 assert not spec.varargs and not spec.varkw
26 for argname in spec.args + spec.kwonlyargs:
27 args[argname] = '<' + argname.replace('_', ' ') + '>'
28 return self.message(**args)
29 else:
30 return self.message
20 31
21 class Problem: 32 class Problem:
22 def __init__(self, problem_class, bad_object, **args): 33 def __init__(self, problem_class, bad_object, **args):
23 self.problem_class = problem_class 34 self.problem_class = problem_class
24 self.severity = problem_class.severity 35 self.severity = problem_class.severity
158 ldraw_code = ldraw_code, 169 ldraw_code = ldraw_code,
159 ) 170 )
160 messages.append(message) 171 messages.append(message)
161 return '\n'.join(messages) 172 return '\n'.join(messages)
162 173
163 def all_warning_types(test_suite): 174 def iterate_problems(test_suite):
164 for test_function in test_suite['tests']: 175 for test_function in test_suite['tests']:
165 yield from test_function.ldcheck_problem_types.values() 176 yield from test_function.ldcheck_problem_types.values()
177
178 def all_problem_types(test_suite):
179 return sorted(
180 iterate_problems(test_suite),
181 key = lambda problem_type: problem_type.name
182 )
183
166 184
167 if __name__ == '__main__': 185 if __name__ == '__main__':
168 from pprint import pprint 186 from pprint import pprint
169 pprint(load_tests()) 187 pprint(load_tests())

mercurial