Skip to content

Commit 8090fec

Browse files
committed
Embed table inside another details section
1 parent 79c2d6d commit 8090fec

4 files changed

Lines changed: 90 additions & 23 deletions

File tree

coverage_comment/main.py

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,26 @@ def process_pr(
205205
except github.CannotDeterminePR:
206206
pr_number = None
207207

208+
plain_text_report: str | None = None
209+
if config.INCLUDE_PLAIN_TEXT_REPORT:
210+
try:
211+
plain_text_report = template.get_plain_text_markdown(
212+
coverage=coverage,
213+
diff_coverage=diff_coverage,
214+
previous_coverage=previous_coverage,
215+
previous_coverage_rate=previous_coverage_rate,
216+
files=files_info,
217+
count_files=count_files,
218+
max_files=None,
219+
subproject_id=config.SUBPROJECT_ID,
220+
failure_msg=failure_msg,
221+
)
222+
except template.TemplateError:
223+
log.warning(
224+
"There was a rendering error when computing the plain-text report. "
225+
"The plain-text output will not be available."
226+
)
227+
208228
try:
209229
comment = template.get_comment_markdown(
210230
coverage=coverage,
@@ -226,6 +246,7 @@ def process_pr(
226246
marker=marker,
227247
subproject_id=config.SUBPROJECT_ID,
228248
failure_msg=failure_msg,
249+
plain_text_report=plain_text_report,
229250
)
230251
# Same as above except `max_files` is None
231252
summary_comment = template.get_comment_markdown(
@@ -248,6 +269,7 @@ def process_pr(
248269
marker=marker,
249270
subproject_id=config.SUBPROJECT_ID,
250271
failure_msg=failure_msg,
272+
plain_text_report=plain_text_report,
251273
)
252274
except template.MissingMarker:
253275
log.error(
@@ -270,29 +292,6 @@ def process_pr(
270292
content=summary_comment, github_step_summary=config.GITHUB_STEP_SUMMARY
271293
)
272294

273-
if config.INCLUDE_PLAIN_TEXT_REPORT:
274-
try:
275-
plain_text_report = template.get_plain_text_markdown(
276-
coverage=coverage,
277-
diff_coverage=diff_coverage,
278-
previous_coverage=previous_coverage,
279-
previous_coverage_rate=previous_coverage_rate,
280-
files=files_info,
281-
count_files=count_files,
282-
max_files=None,
283-
subproject_id=config.SUBPROJECT_ID,
284-
failure_msg=failure_msg,
285-
)
286-
github.add_job_summary(
287-
content=plain_text_report,
288-
github_step_summary=config.GITHUB_STEP_SUMMARY,
289-
)
290-
except template.TemplateError:
291-
log.warning(
292-
"There was a rendering error when computing the plain-text report. "
293-
"The plain-text output will not be available."
294-
)
295-
296295
if pr_number is not None and config.ANNOTATE_MISSING_LINES:
297296
annotations = diff_grouper.get_diff_missing_groups(
298297
coverage=coverage, diff_coverage=diff_coverage

coverage_comment/template.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ def get_comment_markdown(
142142
custom_template: str | None = None,
143143
pr_targets_default_branch: bool = True,
144144
failure_msg: str | None = None,
145+
plain_text_report: str | None = None,
145146
):
146147
loader = CommentLoader(base_template=base_template, custom_template=custom_template)
147148
env = SandboxedEnvironment(loader=loader)
@@ -190,6 +191,7 @@ def get_comment_markdown(
190191
marker=marker,
191192
pr_targets_default_branch=pr_targets_default_branch,
192193
failure_msg=failure_msg,
194+
plain_text_report=plain_text_report,
193195
)
194196
except jinja2.exceptions.TemplateError as exc:
195197
raise TemplateError from exc

coverage_comment/template_files/comment.md.j2

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,4 +275,11 @@ This report was generated by [python-coverage-comment-action](https://github.com
275275
{%- endif -%}
276276
{%- endblock coverage_by_file %}
277277

278+
{% if plain_text_report %}
279+
<details><summary>Plain-text coverage table (for copy-paste)</summary>
280+
281+
{{ plain_text_report }}
282+
</details>
283+
284+
{% endif -%}
278285
{{ marker -}}

tests/unit/test_template.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,65 @@ def test_template__no_files(coverage_obj, diff_coverage_obj_more_files):
408408
assert "other.py" not in result
409409

410410

411+
def test_template__with_plain_text_report(coverage_obj, diff_coverage_obj):
412+
files, total = template.select_files(
413+
coverage=coverage_obj,
414+
diff_coverage=diff_coverage_obj,
415+
previous_coverage=None,
416+
max_files=25,
417+
)
418+
result = template.get_comment_markdown(
419+
coverage=coverage_obj,
420+
diff_coverage=diff_coverage_obj,
421+
previous_coverage=None,
422+
previous_coverage_rate=None,
423+
files=files,
424+
count_files=total,
425+
max_files=25,
426+
minimum_green=decimal.Decimal("100"),
427+
minimum_orange=decimal.Decimal("70"),
428+
marker="<!-- foo -->",
429+
github_host="https://github.com",
430+
repo_name="org/repo",
431+
pr_number=3,
432+
branch_name=None,
433+
base_template=template.read_template_file("comment.md.j2"),
434+
plain_text_report="## Plain-text coverage report\n\n| File | Coverage |\n| ---- | -------: |\n| code.py | 50% |",
435+
)
436+
assert "<details><summary>Plain-text coverage table (for copy-paste)</summary>" in result
437+
assert "## Plain-text coverage report" in result
438+
assert "| code.py | 50% |" in result
439+
assert "<!-- foo -->" in result
440+
441+
442+
def test_template__without_plain_text_report(coverage_obj, diff_coverage_obj):
443+
files, total = template.select_files(
444+
coverage=coverage_obj,
445+
diff_coverage=diff_coverage_obj,
446+
previous_coverage=None,
447+
max_files=25,
448+
)
449+
result = template.get_comment_markdown(
450+
coverage=coverage_obj,
451+
diff_coverage=diff_coverage_obj,
452+
previous_coverage=None,
453+
previous_coverage_rate=None,
454+
files=files,
455+
count_files=total,
456+
max_files=25,
457+
minimum_green=decimal.Decimal("100"),
458+
minimum_orange=decimal.Decimal("70"),
459+
marker="<!-- foo -->",
460+
github_host="https://github.com",
461+
repo_name="org/repo",
462+
pr_number=3,
463+
branch_name=None,
464+
base_template=template.read_template_file("comment.md.j2"),
465+
)
466+
assert "Plain-text coverage table" not in result
467+
assert "<!-- foo -->" in result
468+
469+
411470
def test_get_plain_text_markdown(make_coverage, make_coverage_and_diff):
412471
previous_cov = make_coverage(
413472
"""

0 commit comments

Comments
 (0)