Skip to content

Commit f82ea85

Browse files
committed
PNG badges in coverage comment
1 parent bddb8d0 commit f82ea85

5 files changed

Lines changed: 26 additions & 13 deletions

File tree

coverage_comment/badge.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import decimal
99
import json
1010
import urllib.parse
11+
from typing import Literal
1112

1213
import httpx
1314

@@ -67,13 +68,18 @@ def compute_badge_image(
6768
).text
6869

6970

70-
def get_static_badge_url(label: str, message: str, color: str) -> str:
71+
def get_static_badge_url(
72+
label: str,
73+
message: str,
74+
color: str,
75+
format: Literal["svg", "png"] = "png",
76+
) -> str:
7177
if not color or not message:
7278
raise ValueError("color and message are required")
7379
code = "-".join(
7480
e.replace("_", "__").replace("-", "--") for e in (label, message, color) if e
7581
)
76-
return "https://img.shields.io/badge/" + urllib.parse.quote(f"{code}.svg")
82+
return "https://img.shields.io/badge/" + urllib.parse.quote(f"{code}.{format}")
7783

7884

7985
def get_endpoint_url(endpoint_url: str) -> str:

coverage_comment/template.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import pathlib
99
from collections.abc import Callable
1010
from importlib import resources
11+
from typing import Literal
1112

1213
import jinja2
1314
from jinja2.sandbox import SandboxedEnvironment
@@ -127,14 +128,17 @@ def get_comment_markdown(
127128
subproject_id: str | None = None,
128129
custom_template: str | None = None,
129130
pr_targets_default_branch: bool = True,
131+
image_format: Literal["svg", "png"] = "png",
130132
):
131133
loader = CommentLoader(base_template=base_template, custom_template=custom_template)
132134
env = SandboxedEnvironment(loader=loader)
133135
env.filters["pct"] = pct
134136
env.filters["delta"] = delta
135137
env.filters["x100"] = x100
136138
env.filters["get_evolution_color"] = badge.get_evolution_badge_color
137-
env.filters["generate_badge"] = badge.get_static_badge_url
139+
env.filters["generate_badge"] = functools.partial(
140+
badge.get_static_badge_url, format=image_format
141+
)
138142
env.filters["pluralize"] = pluralize
139143
env.filters["file_url"] = functools.partial(
140144
get_file_url, repo_name=repo_name, pr_number=pr_number

tests/end_to_end/test_all.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def test_public_repo(
183183
fail_value="\n",
184184
)
185185

186-
assert "-brightgreen.svg" in ext_comment
186+
assert "-brightgreen.png" in ext_comment
187187

188188

189189
@pytest.mark.repo_suffix("private")

tests/unit/test_badge.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ def test_compute_badge_image(session):
6666

6767

6868
def test_get_static_badge_url():
69-
result = badge.get_static_badge_url(label="a-b", message="c_d e", color="green")
69+
result = badge.get_static_badge_url(
70+
label="a-b", message="c_d e", color="green", format="svg"
71+
)
7072

7173
assert result == "https://img.shields.io/badge/a--b-c__d%20e-green.svg"
7274

0 commit comments

Comments
 (0)