Skip to content

Commit a064b92

Browse files
committed
First attempt to break __init__ in smaller functions
1 parent ca9efc9 commit a064b92

File tree

1 file changed

+36
-30
lines changed

1 file changed

+36
-30
lines changed

pytest_html/plugin.py

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -336,37 +336,52 @@ def _append_video(self, extra, extra_index, test_index):
336336
)
337337
self.additional_html.append(html.div(html_div, class_="video"))
338338

339-
class EnvironmentTable:
339+
class EnvironmentSection:
340340
def __init__(self, config):
341341
self.metadata = getattr(config, "_metadata", [])
342342
self.config = config
343+
self.environment = []
343344
self.environment_table = []
344345

345-
rows = []
346-
347-
header_cells = [html.th("Key"), html.th("Value")]
348-
self.config.hook.pytest_html_environment_table_header(cells=header_cells)
349-
rows.append(header_cells)
350346
if self.metadata:
347+
self.rows = []
348+
self._generate_environment_header()
349+
351350
keys = [k for k in self.metadata.keys()]
352351
if not isinstance(self.metadata, OrderedDict):
353352
keys.sort()
354353

355354
for key in keys:
356-
value = self.metadata[key]
357-
if isinstance(value, str) and value.startswith("http"):
358-
value = html.a(value, href=value, target="_blank")
359-
elif isinstance(value, (list, tuple, set)):
360-
value = ", ".join(str(i) for i in sorted(map(str, value)))
361-
elif isinstance(value, dict):
362-
sorted_dict = {k: value[k] for k in sorted(value)}
363-
value = json.dumps(sorted_dict)
364-
raw_value_string = raw(str(value))
365-
row_cells = html.tr(html.td(key), html.td(raw_value_string))
366-
self.config.hook.pytest_html_environment_table_row(cells=row_cells)
367-
rows.append(row_cells)
368-
369-
self.environment_table.append(html.table(rows, id="environment"))
355+
self._generate_environment_row(key)
356+
357+
self._generate_environment_section()
358+
359+
def _generate_environment_header(self):
360+
header_cells = [html.th("Key"), html.th("Value")]
361+
self.config.hook.pytest_html_environment_table_header(cells=header_cells)
362+
self.rows.append(header_cells)
363+
364+
def _generate_environment_row(self, key):
365+
value = self.metadata[key]
366+
if isinstance(value, str) and value.startswith("http"):
367+
value = html.a(value, href=value, target="_blank")
368+
elif isinstance(value, (list, tuple, set)):
369+
value = ", ".join(str(i) for i in sorted(map(str, value)))
370+
elif isinstance(value, dict):
371+
sorted_dict = {k: value[k] for k in sorted(value)}
372+
value = json.dumps(sorted_dict)
373+
raw_value_string = raw(str(value))
374+
row_cells = html.tr(html.td(key), html.td(raw_value_string))
375+
self.config.hook.pytest_html_environment_table_row(cells=row_cells)
376+
self.rows.append(row_cells)
377+
378+
def _generate_environment_table(self):
379+
self.environment_table.append(html.table(self.rows, id="environment"))
380+
381+
def _generate_environment_section(self):
382+
if self.environment_table:
383+
self.environment = [html.h2("Environment")]
384+
self.environment.append(self.environment_table)
370385

371386
def _appendrow(self, outcome, report):
372387
result = self.TestResult(outcome, report, self.logfile, self.config)
@@ -564,7 +579,7 @@ def generate_summary_item(self):
564579
onLoad="init()",
565580
)
566581

567-
body.extend(self._generate_environment(session.config))
582+
body.extend(self.EnvironmentSection(session.config).environment_table)
568583

569584
summary_prefix, summary_postfix = [], []
570585
session.config.hook.pytest_html_results_summary(
@@ -582,15 +597,6 @@ def generate_summary_item(self):
582597
unicode_doc = unicode_doc.encode("utf-8", errors="xmlcharrefreplace")
583598
return unicode_doc.decode("utf-8")
584599

585-
def _generate_environment(self, config):
586-
environment_table = self.EnvironmentTable(config).environment_table
587-
if environment_table:
588-
environment = [html.h2("Environment")]
589-
environment.append(environment_table)
590-
else:
591-
environment = []
592-
return environment
593-
594600
def _save_report(self, report_content):
595601
dir_name = os.path.dirname(self.logfile)
596602
assets_dir = os.path.join(dir_name, "assets")

0 commit comments

Comments
 (0)