mirror of
https://github.com/esphome/esphome.git
synced 2026-08-17 19:13:18 +08:00
[ci] Read the GitHub event file as UTF-8 (#17896)
This commit is contained in:
+4
-1
@@ -421,7 +421,10 @@ def _get_github_event_data() -> dict | None:
|
||||
"""
|
||||
github_event_path = os.environ.get("GITHUB_EVENT_PATH")
|
||||
if github_event_path and Path(github_event_path).exists():
|
||||
with Path(github_event_path).open() as f:
|
||||
# The event payload is UTF-8 JSON; without an explicit encoding
|
||||
# Windows decodes it as cp1252 and any non ASCII byte (an ellipsis in
|
||||
# a commit title is enough) raises UnicodeDecodeError.
|
||||
with Path(github_event_path).open(encoding="utf-8") as f:
|
||||
return json.load(f)
|
||||
return None
|
||||
|
||||
|
||||
@@ -79,6 +79,22 @@ def test_get_pr_number_from_github_env_event_file(
|
||||
assert result == "5678"
|
||||
|
||||
|
||||
def test_get_github_event_data_decodes_utf8_regardless_of_locale(
|
||||
monkeypatch: MonkeyPatch, tmp_path: Path
|
||||
) -> None:
|
||||
"""The event payload is UTF-8; parsing must not depend on the platform
|
||||
default encoding. On Windows the default is cp1252, which raised
|
||||
UnicodeDecodeError as soon as a commit title carried non ASCII text."""
|
||||
event_file = tmp_path / "event.json"
|
||||
event_data = {"head_commit": {"message": "Answer UNPAIR with Response… é"}}
|
||||
event_file.write_bytes(json.dumps(event_data, ensure_ascii=False).encode("utf-8"))
|
||||
monkeypatch.setenv("GITHUB_EVENT_PATH", str(event_file))
|
||||
|
||||
result = helpers._get_github_event_data()
|
||||
|
||||
assert result == event_data
|
||||
|
||||
|
||||
def test_get_pr_number_from_github_env_no_pr(
|
||||
monkeypatch: MonkeyPatch, tmp_path: Path
|
||||
) -> None:
|
||||
|
||||
Reference in New Issue
Block a user