[Piglit] [PATCH 07/26] framework/summary.py: make text columns width variable
Dylan Baker
baker.dylan.c at gmail.com
Fri Sep 11 15:55:33 PDT 2015
Makes the widths of the columns always between 6 and 20 (being that
there are unlikely to be more than a million tests, and over 20 is just
too big), it truncates the name of the result if it is over 20
characters long.
Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
framework/summary.py | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/framework/summary.py b/framework/summary.py
index 4fabee8..14c502d 100644
--- a/framework/summary.py
+++ b/framework/summary.py
@@ -596,12 +596,19 @@ class Summary:
regressions: {regressions}
total: {total}""")
- print_template = ' '.join(
- '{: >20}' for x in xrange(len(self.results)))
+ def make(value):
+ # This convaluted little function makes a formatter string that
+ # looks like this: {: >x.x}, which prints a string that is x
+ # characters wide and truncated at x, and right aligned, using
+ # spaces to pad any remaining space on the left
+ return '{: >' + '{0}.{0}'.format(value) + '}'
+
+ lens = [max(min(len(x.name), 20), 6) for x in self.results]
+ print_template = ' '.join(make(y) for y in lens)
def status_printer(stat):
- return print_template.format(
- *[x.totals['root'][stat] for x in self.results])
+ totals = [str(x.totals['root'][stat]) for x in self.results]
+ return print_template.format(*totals)
def change_printer(func):
counts = [''] # There can't be changes from nil -> 0
@@ -613,12 +620,12 @@ class Summary:
count += 1
except KeyError:
pass
- counts.append(count)
+ counts.append(str(count))
return print_template.format(*counts)
print(template.format(
names=print_template.format(*[r.name for r in self.results]),
- divider=print_template.format(*['-'*20 for _ in self.results]),
+ divider=print_template.format(*['-'*l for l in lens]),
pass_=status_printer('pass'),
crash=status_printer('crash'),
fail=status_printer('fail'),
@@ -632,7 +639,8 @@ class Summary:
fixes=change_printer(operator.gt),
regressions=change_printer(operator.lt),
total=print_template.format(*[
- sum(x.totals['root'].itervalues()) for x in self.results])))
+ str(sum(x.totals['root'].itervalues()))
+ for x in self.results])))
# Print the name of the test and the status from each test run
if mode == 'all':
--
2.5.1
More information about the Piglit
mailing list