Merge lp:~sylvain-pineau/checkbox/xlsx_expoter_fixes into lp:checkbox

Proposed by Sylvain Pineau
Status: Merged
Approved by: Sylvain Pineau
Approved revision: 3023
Merged at revision: 3019
Proposed branch: lp:~sylvain-pineau/checkbox/xlsx_expoter_fixes
Merge into: lp:checkbox
Prerequisite: lp:~sylvain-pineau/checkbox/job_summary_for_exporters
Diff against target: 167 lines (+30/-22)
1 file modified
plainbox/plainbox/impl/exporter/xlsx.py (+30/-22)
To merge this branch: bzr merge lp:~sylvain-pineau/checkbox/xlsx_expoter_fixes
Reviewer Review Type Date Requested Status
Zygmunt Krynicki (community) Approve
Review via email: mp+220409@code.launchpad.net

Description of the change

Set of fixes for the xlsx exporter to render correctly under LibreOffice when started from checkbox-gui (i.e pre-run local jobs are now ignored)

To post a comment you must log in.
Revision history for this message
Zygmunt Krynicki (zyga) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'plainbox/plainbox/impl/exporter/xlsx.py'
2--- plainbox/plainbox/impl/exporter/xlsx.py 2014-04-30 20:32:46 +0000
3+++ plainbox/plainbox/impl/exporter/xlsx.py 2014-05-21 10:46:32 +0000
4@@ -112,17 +112,17 @@
5 })
6 # Titles + borders
7 self.format04 = self.workbook.add_format({
8- 'align': 'left', 'size': 12, 'bold': 1, 'border': 7
9+ 'align': 'left', 'size': 12, 'bold': 1, 'border': 1
10 })
11 # System info with borders
12 self.format05 = self.workbook.add_format({
13 'align': 'left', 'valign': 'vcenter', 'text_wrap': 1, 'size': 8,
14- 'border': 7,
15+ 'border': 1,
16 })
17 # System info with borders, grayed out background
18 self.format06 = self.workbook.add_format({
19 'align': 'left', 'valign': 'vcenter', 'text_wrap': 1, 'size': 8,
20- 'border': 7, 'bg_color': '#E6E6E6',
21+ 'border': 1, 'bg_color': '#E6E6E6',
22 })
23 # Headlines (center)
24 self.format07 = self.workbook.add_format({
25@@ -140,17 +140,17 @@
26 # Green background / Size 8
27 self.format10 = self.workbook.add_format({
28 'align': 'center', 'valign': 'vcenter', 'text_wrap': 1, 'size': 8,
29- 'bg_color': 'lime', 'border': 7, 'border_color': 'white',
30+ 'bg_color': 'lime', 'border': 1, 'border_color': 'white',
31 })
32 # Red background / Size 8
33 self.format11 = self.workbook.add_format({
34 'align': 'center', 'valign': 'vcenter', 'text_wrap': 1, 'size': 8,
35- 'bg_color': 'red', 'border': 7, 'border_color': 'white',
36+ 'bg_color': 'red', 'border': 1, 'border_color': 'white',
37 })
38 # Gray background / Size 8
39 self.format12 = self.workbook.add_format({
40 'align': 'center', 'valign': 'vcenter', 'text_wrap': 1, 'size': 8,
41- 'bg_color': 'gray', 'border': 7, 'border_color': 'white',
42+ 'bg_color': 'gray', 'border': 1, 'border_color': 'white',
43 })
44 # Attachments
45 self.format13 = self.workbook.add_format({
46@@ -312,7 +312,8 @@
47 self.worksheet2.write(5, 1, '✘', self.format11)
48 self.worksheet2.write(
49 5, 2, (
50- ngettext('{} Test failed', '{} Tests failed', self.total_fail)
51+ ngettext('{} Test failed', '{} Tests failed',
52+ self.total_fail).format(self.total_fail)
53 + ' - '
54 + _('Failure Rate: {:.2f}% ({}/{})').format(
55 self.total_fail / self.total * 100,
56@@ -322,7 +323,7 @@
57 self.worksheet2.write(
58 6, 2, (
59 ngettext('{} Test skipped', '{} Tests skipped',
60- self.total_skip)
61+ self.total_skip).format(self.total_skip)
62 + ' - '
63 + _('Skip Rate: {:.2f}% ({}/{})').format(
64 self.total_skip / self.total * 100,
65@@ -347,7 +348,7 @@
66 )
67 # Insert the chart into the worksheet.
68 self.worksheet2.insert_chart('F4', chart, {
69- 'x_offset': 0, 'y_offset': 10, 'x_scale': 0.25, 'y_scale': 0.25
70+ 'x_offset': 0, 'y_offset': 10, 'x_scale': 0.50, 'y_scale': 0.50
71 })
72
73 def _set_category_status(self, result_map, via, child):
74@@ -357,6 +358,9 @@
75 child_status = result_map[child]['outcome']
76 if 'category_status' in result_map[child]:
77 child_status = result_map[child]['category_status']
78+ # Ignore categories without any child
79+ elif result_map[child]['plugin'] == 'local':
80+ continue
81 if child_status == IJobResult.OUTCOME_FAIL:
82 result_map[parent]['category_status'] = IJobResult.OUTCOME_FAIL
83 elif (
84@@ -395,11 +399,14 @@
85 sorted(
86 tree.items(),
87 key=lambda t: 'z' + t[0] if t[1] else 'a' + t[0])).items():
88+ if (result_map[job]['plugin'] == 'local' and
89+ not result_map[job].get('category_status')):
90+ continue
91 self._lineno += 1
92 if children:
93 self.worksheet3.write(
94 self._lineno, level + 1,
95- result_map[job]['description'], self.format15)
96+ result_map[job]['summary'], self.format15)
97 if (
98 result_map[job]['category_status'] ==
99 IJobResult.OUTCOME_PASS
100@@ -435,7 +442,7 @@
101 self._write_job(children, result_map, max_level, level + 1)
102 else:
103 self.worksheet3.write(
104- self._lineno, max_level + 1, job,
105+ self._lineno, max_level + 1, result_map[job]['summary'],
106 self.format08 if self._lineno % 2 else self.format09)
107 if self.OPTION_WITH_DESCRIPTION in self._option_list:
108 link_cell = xl_rowcol_to_cell(self._lineno, max_level + 1)
109@@ -443,9 +450,10 @@
110 self._lineno, max_level + 1,
111 'internal:' + _("Test Descriptions") + '!' + link_cell,
112 self.format08 if self._lineno % 2 else self.format09,
113- job)
114+ result_map[job]['summary'])
115 self.worksheet4.write(
116- self._lineno, max_level + 1, job,
117+ self._lineno, max_level + 1,
118+ result_map[job]['summary'],
119 self.format08 if self._lineno % 2 else self.format09)
120 self.total += 1
121 if result_map[job]['outcome'] == IJobResult.OUTCOME_PASS:
122@@ -498,17 +506,17 @@
123 self.format16 if self._lineno % 2 else self.format17)
124 if level:
125 self.worksheet3.set_row(
126- self._lineno, 12 + 9.71 * io_lines,
127+ self._lineno, 12 + 10.5 * io_lines,
128 None, {'level': level})
129 if self.OPTION_WITH_DESCRIPTION in self._option_list:
130 self.worksheet4.set_row(
131- self._lineno, 12 + 9.71 * desc_lines,
132+ self._lineno, 12 + 10.5 * desc_lines,
133 None, {'level': level})
134 else:
135- self.worksheet3.set_row(self._lineno, 12 + 9.71 * io_lines)
136+ self.worksheet3.set_row(self._lineno, 12 + 10.5 * io_lines)
137 if self.OPTION_WITH_DESCRIPTION in self._option_list:
138 self.worksheet4.set_row(
139- self._lineno, 12 + 9.71 * desc_lines)
140+ self._lineno, 12 + 10.5 * desc_lines)
141
142 def write_results(self, data):
143 tree, max_level = self._tree(data['result_map'])
144@@ -517,9 +525,9 @@
145 self.worksheet3.set_tab_color('#DC4C00') # Orange
146 self.worksheet3.set_column(0, 0, 5)
147 [self.worksheet3.set_column(i, i, 2) for i in range(1, max_level + 1)]
148- self.worksheet3.set_column(max_level + 1, max_level + 0, 48)
149- self.worksheet3.set_column(max_level + 2, max_level + 1, 12)
150- self.worksheet3.set_column(max_level + 3, max_level + 2, 65)
151+ self.worksheet3.set_column(max_level + 1, max_level + 1, 48)
152+ self.worksheet3.set_column(max_level + 2, max_level + 2, 12)
153+ self.worksheet3.set_column(max_level + 3, max_level + 3, 65)
154 self.worksheet3.write_row(
155 5, max_level + 1, [_('Name'), _('Result'), _('I/O Log')],
156 self.format07)
157@@ -529,8 +537,8 @@
158 self.worksheet4.set_column(0, 0, 5)
159 [self.worksheet4.set_column(i, i, 2)
160 for i in range(1, max_level + 1)]
161- self.worksheet4.set_column(max_level + 1, max_level + 0, 48)
162- self.worksheet4.set_column(max_level + 2, max_level + 1, 65)
163+ self.worksheet4.set_column(max_level + 1, max_level + 1, 48)
164+ self.worksheet4.set_column(max_level + 2, max_level + 2, 65)
165 self.worksheet4.write_row(
166 5, max_level + 1, [_('Name'), _('Description')], self.format07
167 )

Subscribers

People subscribed via source and target branches