| # |
| # Copyright (C) 2015 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| from __future__ import print_function |
| |
| import util |
| |
| |
| def format_stats_str(num_tests, stats, use_color): |
| pass_label = util.color_string('PASS', 'green') if use_color else 'PASS' |
| fail_label = util.color_string('FAIL', 'red') if use_color else 'FAIL' |
| skip_label = util.color_string('SKIP', 'yellow') if use_color else 'SKIP' |
| return '{pl} {p}/{t} {fl} {f}/{t} {sl} {s}/{t}'.format( |
| pl=pass_label, p=stats['pass'], |
| fl=fail_label, f=stats['fail'], |
| sl=skip_label, s=stats['skip'], |
| t=num_tests) |
| |
| |
| class Printer(object): |
| def print_results(self, results, stats): |
| raise NotImplementedError |
| |
| |
| class StdoutPrinter(Printer): |
| def __init__(self, use_color=False, show_all=False): |
| self.use_color = use_color |
| self.show_all = show_all |
| |
| def print_results(self, results, stats): |
| print() |
| formatted = format_stats_str(stats.num_tests, |
| stats.global_stats, self.use_color) |
| print(formatted) |
| for suite, test_results in results.items(): |
| stats_str = format_stats_str(len(test_results), |
| stats.suite_stats[suite], |
| self.use_color) |
| print() |
| print('{}: {}'.format(suite, stats_str)) |
| for result in test_results: |
| if self.show_all or result.failed(): |
| print(result.to_string(colored=self.use_color)) |