[ci] Read the GitHub event file as UTF-8 (#17896)

This commit is contained in:
J. Nick Koston
2026-07-27 17:33:08 -10:00
committed by GitHub
parent c2476911a3
commit 16930c4e2c
2 changed files with 20 additions and 1 deletions
+4 -1
View File
@@ -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
+16
View File
@@ -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: