diff options
author | Dylan Baker <baker.dylan.c@gmail.com> | 2015-09-09 15:01:42 -0700 |
---|---|---|
committer | Dylan Baker <baker.dylan.c@gmail.com> | 2015-09-22 14:45:49 -0700 |
commit | 36d2471ef647f7e860549315df760d203b9dbdb4 (patch) | |
tree | 27bf64bcfe573edbb7f37ef7aa1626deb0728751 /framework/summary | |
parent | 26a28fab19c283650431cdc3eb075599c0ccad1d (diff) |
framework/summary/console_.py: split summary printer out
Splits the code that generates the summary out into a helper functions,
and adds tests.
These tests have identified bugs already.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
Diffstat (limited to 'framework/summary')
-rw-r--r-- | framework/summary/console_.py | 108 |
1 files changed, 55 insertions, 53 deletions
diff --git a/framework/summary/console_.py b/framework/summary/console_.py index cdda1cdf0..715b6eb32 100644 --- a/framework/summary/console_.py +++ b/framework/summary/console_.py @@ -34,6 +34,58 @@ __all__ = [ 'console', ] +_SUMMARY_TEMPLATE = textwrap.dedent("""\ + summary: + name: {names} + ---- {divider} + pass: {pass_} + fail: {fail} + crash: {crash} + skip: {skip} + timeout: {timeout} + warn: {warn} + incomplete: {incomplete} + dmesg-warn: {dmesg_warn} + dmesg-fail: {dmesg_fail} + changes: {changes} + fixes: {fixes} + regressions: {regressions} + total: {total}""") + + +def _print_summary(results): + """print a summary.""" + + lens = [max(min(len(x.name), 20), 6) for x in results.results] + print_template = ' '.join( + (lambda x: '{: >' + '{0}.{0}'.format(x) + '}')(y) for y in lens) + + def status_printer(stat): + totals = [str(x.totals['root'][stat]) for x in results.results] + return print_template.format(*totals) + + print(_SUMMARY_TEMPLATE.format( + names=print_template.format(*[r.name for r in results.results]), + divider=print_template.format(*['-'*l for l in lens]), + pass_=status_printer('pass'), + crash=status_printer('crash'), + fail=status_printer('fail'), + skip=status_printer('skip'), + timeout=status_printer('timeout'), + warn=status_printer('warn'), + incomplete=status_printer('incomplete'), + dmesg_warn=status_printer('dmesg-warn'), + dmesg_fail=status_printer('dmesg-fail'), + changes=print_template.format( + *[str(s) for s in results.counts.changes]), + fixes=print_template.format( + *[str(s) for s in results.counts.fixes]), + regressions=print_template.format( + *[str(s) for s in results.counts.regressions]), + total=print_template.format(*[ + str(sum(x.totals['root'].itervalues())) + for x in results.results]))) + def console(results, mode): """ Write summary information to the console """ @@ -50,64 +102,14 @@ def console(results, mode): test='/'.join(test.split(grouptools.SEPARATOR)), statuses=' '.join(str(r) for r in results.get_result(test)))) - def print_summary(): - """print a summary.""" - template = textwrap.dedent("""\ - summary: - name: {names} - ---- {divider} - pass: {pass_} - fail: {fail} - crash: {crash} - skip: {skip} - timeout: {timeout} - warn: {warn} - incomplete: {incomplete} - dmesg-warn: {dmesg_warn} - dmesg-fail: {dmesg_fail} - changes: {changes} - fixes: {fixes} - regressions: {regressions} - total: {total}""") - - lens = [max(min(len(x.name), 20), 6) for x in results.results] - print_template = ' '.join( - (lambda x: '{: >' + '{0}.{0}'.format(x) + '}')(y) for y in lens) - - def status_printer(stat): - totals = [str(x.totals['root'][stat]) for x in results.results] - return print_template.format(*totals) - - print(template.format( - names=print_template.format(*[r.name for r in results.results]), - divider=print_template.format(*['-'*l for l in lens]), - pass_=status_printer('pass'), - crash=status_printer('crash'), - fail=status_printer('fail'), - skip=status_printer('skip'), - timeout=status_printer('timeout'), - warn=status_printer('warn'), - incomplete=status_printer('incomplete'), - dmesg_warn=status_printer('dmesg-warn'), - dmesg_fail=status_printer('dmesg-fail'), - changes=print_template.format( - *[str(s) for s in results.counts.changes]), - fixes=print_template.format( - *[str(s) for s in results.counts.fixes]), - regressions=print_template.format( - *[str(s) for s in results.counts.regressions]), - total=print_template.format(*[ - str(sum(x.totals['root'].itervalues())) - for x in results.results]))) - # Print the name of the test and the status from each test run if mode == 'all': printer(results.names.all) - print_summary() + _print_summary(results) elif mode == 'diff': printer(results.names.all_changes) - print_summary() + _print_summary(results) elif mode == 'incomplete': printer(results.names.all_incomplete) elif mode == 'summary': - print_summary() + _print_summary(results) |