• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright (C) 2015 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16from __future__ import print_function
17
18import util
19
20
21def format_stats_str(num_tests, stats, use_color):
22    pass_label = util.color_string('PASS', 'green') if use_color else 'PASS'
23    fail_label = util.color_string('FAIL', 'red') if use_color else 'FAIL'
24    skip_label = util.color_string('SKIP', 'yellow') if use_color else 'SKIP'
25    return '{pl} {p}/{t} {fl} {f}/{t} {sl} {s}/{t}'.format(
26        pl=pass_label, p=stats['pass'],
27        fl=fail_label, f=stats['fail'],
28        sl=skip_label, s=stats['skip'],
29        t=num_tests)
30
31
32class Printer(object):
33    def print_results(self, results, stats):
34        raise NotImplementedError
35
36
37class StdoutPrinter(Printer):
38    def __init__(self, use_color=False, show_all=False):
39        self.use_color = use_color
40        self.show_all = show_all
41
42    def print_results(self, results, stats):
43        print()
44        formatted = format_stats_str(stats.num_tests,
45                                     stats.global_stats, self.use_color)
46        print(formatted)
47        for suite, test_results in results.items():
48            stats_str = format_stats_str(len(test_results),
49                                         stats.suite_stats[suite],
50                                         self.use_color)
51            print()
52            print('{}: {}'.format(suite, stats_str))
53            for result in test_results:
54                if self.show_all or result.failed():
55                    print(result.to_string(colored=self.use_color))
56