diff -r 5933250813a3 -r db6ca177c6c4 testsuite.py --- a/testsuite.py Tue Jan 23 14:09:44 2018 +0200 +++ b/testsuite.py Tue Jan 23 14:09:52 2018 +0200 @@ -84,14 +84,36 @@ report.append(problem) return report +def problem_text(problem, test_suite): + message = test_suite['messages'][problem['name']] + if callable(message): + message = message(**problem['args']) + return message + +def format_report_html(report, model, test_suite): + result = [] + for problem in report: + ldraw_code = model.body[problem['body-index']].textual_representation() + message = str.format( + '
  • {model_name}:{line_number}:' + '{problem_type}: {message}
    {ldraw_code}
  • ', + model_name = model.name, + line_number = problem['line-number'], + problem_type = problem['type'], + message = problem_text(problem, test_suite), + ldraw_code = ldraw_code, + ) + result.append((problem['line-number'], message)) + return '\n'.join( + problem[1] + for problem in sorted(result) + ) + def format_report(report, model, test_suite): import colorama colorama.init() result = [] for problem in report: - problem_text = test_suite['messages'][problem['name']] - if callable(problem_text): - problem_text = problem_text(**problem['args']) if problem['type'] == 'error': text_colour = colorama.Fore.LIGHTRED_EX elif problem['type'] == 'warning': @@ -106,7 +128,7 @@ model_name = model.name, line_number = problem['line-number'], problem_type = problem['type'], - message = problem_text, + message = problem_text(problem, test_suite), colour_reset = colorama.Fore.RESET, ldraw_code = ldraw_code, )