| 11 | from glob import glob |
| 12 | |
| 13 | class UnityTestSummary: |
| 14 | def __init__(self): |
| 15 | self.report = '' |
| 16 | self.total_tests = 0 |
| 17 | self.failures = 0 |
| 18 | self.ignored = 0 |
| 19 | |
| 20 | def run(self): |
| 21 | # Clean up result file names |
| 22 | results = [] |
| 23 | for target in self.targets: |
| 24 | results.append(target.replace('\\', '/')) |
| 25 | |
| 26 | # Dig through each result file, looking for details on pass/fail: |
| 27 | failure_output = [] |
| 28 | ignore_output = [] |
| 29 | |
| 30 | for result_file in results: |
| 31 | lines = list(map(lambda line: line.rstrip(), open(result_file, "r").read().split('\n'))) |
| 32 | if len(lines) == 0: |
| 33 | raise Exception("Empty test result file: %s" % result_file) |
| 34 | |
| 35 | details = self.get_details(result_file, lines) |
| 36 | failures = details['failures'] |
| 37 | ignores = details['ignores'] |
| 38 | if len(failures) > 0: failure_output.append('\n'.join(failures)) |
| 39 | if len(ignores) > 0: ignore_output.append('n'.join(ignores)) |
| 40 | tests,failures,ignored = self.parse_test_summary('\n'.join(lines)) |
| 41 | self.total_tests += tests |
| 42 | self.failures += failures |
| 43 | self.ignored += ignored |
| 44 | |
| 45 | if self.ignored > 0: |
| 46 | self.report += "\n" |
| 47 | self.report += "--------------------------\n" |
| 48 | self.report += "UNITY IGNORED TEST SUMMARY\n" |
| 49 | self.report += "--------------------------\n" |
| 50 | self.report += "\n".join(ignore_output) |
| 51 | |
| 52 | if self.failures > 0: |
| 53 | self.report += "\n" |
| 54 | self.report += "--------------------------\n" |
| 55 | self.report += "UNITY FAILED TEST SUMMARY\n" |
| 56 | self.report += "--------------------------\n" |
| 57 | self.report += '\n'.join(failure_output) |
| 58 | |
| 59 | self.report += "\n" |
| 60 | self.report += "--------------------------\n" |
| 61 | self.report += "OVERALL UNITY TEST SUMMARY\n" |
| 62 | self.report += "--------------------------\n" |
| 63 | self.report += "{total_tests} TOTAL TESTS {failures} TOTAL FAILURES {ignored} IGNORED\n".format(total_tests = self.total_tests, failures=self.failures, ignored=self.ignored) |
| 64 | self.report += "\n" |
| 65 | |
| 66 | return self.report |
| 67 | |
| 68 | def set_targets(self, target_array): |
| 69 | self.targets = target_array |
| 70 |
no outgoing calls
no test coverage detected
searching dependent graphs…