1 from warnings import warn |
1 from warnings import warn |
2 |
2 |
3 class ProblemType: |
3 class ProblemType: |
4 severities = ['error', 'notice'] # in descending order |
4 severities = ['hold', 'warning'] # in descending order |
5 def __init__(self, name, severity, message): |
5 def __init__(self, name, severity, message): |
6 if severity not in ProblemType.severities: |
6 if severity not in ProblemType.severities: |
7 raise ValueError(str.format( |
7 raise ValueError(str.format( |
8 'bad severity {severity!r}', |
8 'bad severity {severity!r}', |
9 severity = severity, |
9 severity = severity, |
115 = line_numbers[problem.object] |
115 = line_numbers[problem.object] |
116 problem.object = None |
116 problem.object = None |
117 problems.append(problem) |
117 problems.append(problem) |
118 return { |
118 return { |
119 'passed': not any( |
119 'passed': not any( |
120 problem.severity == 'error' |
120 problem.severity == 'hold' |
121 for problem in problems |
121 for problem in problems |
122 ), |
122 ), |
123 'problems': sorted(problems, key = problem_key), |
123 'problems': sorted(problems, key = problem_key), |
124 } |
124 } |
125 |
125 |
148 def format_report(report, model, test_suite): |
148 def format_report(report, model, test_suite): |
149 import colorama |
149 import colorama |
150 colorama.init() |
150 colorama.init() |
151 messages = [] |
151 messages = [] |
152 for problem in report['problems']: |
152 for problem in report['problems']: |
153 if problem.severity == 'error': |
153 if problem.severity == 'hold': |
154 text_colour = colorama.Fore.LIGHTRED_EX |
154 text_colour = colorama.Fore.LIGHTRED_EX |
155 elif problem.severity == 'notice': |
155 elif problem.severity == 'warning': |
156 text_colour = colorama.Fore.LIGHTBLUE_EX |
156 text_colour = colorama.Fore.LIGHTBLUE_EX |
157 else: |
157 else: |
158 text_colour = '' |
158 text_colour = '' |
159 ldraw_code = model.body[problem.body_index].textual_representation() |
159 ldraw_code = model.body[problem.body_index].textual_representation() |
160 message = str.format( |
160 message = str.format( |