From 12983294177235be1eb44fe058816a393b7dee5b Mon Sep 17 00:00:00 2001 From: James Williams Date: Thu, 29 Dec 2022 13:13:03 -0600 Subject: [PATCH 1/4] Make changelog entry. --- docs/changelog/2768.bugfix.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/changelog/2768.bugfix.rst diff --git a/docs/changelog/2768.bugfix.rst b/docs/changelog/2768.bugfix.rst new file mode 100644 index 000000000..80623b624 --- /dev/null +++ b/docs/changelog/2768.bugfix.rst @@ -0,0 +1 @@ +Fix logging error with emoji in git branch name. From f4e59e0625ad101186b80cd5c6a1795e8042e583 Mon Sep 17 00:00:00 2001 From: James Williams Date: Thu, 29 Dec 2022 15:43:09 -0600 Subject: [PATCH 2/4] Write failing test. --- tests/tox_env/test_tox_env_api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/tox_env/test_tox_env_api.py b/tests/tox_env/test_tox_env_api.py index f4f286078..1a8fefdc0 100644 --- a/tests/tox_env/test_tox_env_api.py +++ b/tests/tox_env/test_tox_env_api.py @@ -34,7 +34,8 @@ def test_allow_list_external_fail(tox_project: ToxProjectCreator, fake_exe_on_pa def test_env_log(tox_project: ToxProjectCreator) -> None: cmd = "commands=python -c 'import sys; print(1); print(2); print(3, file=sys.stderr); print(4, file=sys.stderr)'" - prj = tox_project({"tox.ini": f"[testenv]\npackage=skip\n{cmd}"}) + env_vars = " UNPREDICTABLE = 🪟" + prj = tox_project({"tox.ini": f"[testenv]\npackage=skip\nset_env =\n{env_vars}\n{cmd}"}) result_first = prj.run("r") result_first.assert_success() From bb50a96c2b43f0e4d6e8aebc27f9fa1c6479ae63 Mon Sep 17 00:00:00 2001 From: James Williams Date: Thu, 29 Dec 2022 15:52:06 -0600 Subject: [PATCH 3/4] Add log_file UTF-8 encoding. --- src/tox/tox_env/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tox/tox_env/api.py b/src/tox/tox_env/api.py index 98c4501a9..3ce15b993 100644 --- a/src/tox/tox_env/api.py +++ b/src/tox/tox_env/api.py @@ -444,7 +444,7 @@ def _log_execute(self, request: ExecuteRequest, status: ExecuteStatus) -> None: @staticmethod def _write_execute_log(env_name: str, log_file: Path, request: ExecuteRequest, status: ExecuteStatus) -> None: - with log_file.open("wt") as file: + with log_file.open("wt", encoding="utf-8") as file: file.write(f"name: {env_name}\n") file.write(f"run_id: {request.run_id}\n") for env_key, env_value in request.env.items(): From 5a5195c5003dbf98363e407bf241c32cff981f17 Mon Sep 17 00:00:00 2001 From: James Williams Date: Thu, 29 Dec 2022 16:03:24 -0600 Subject: [PATCH 4/4] Update encoding in pytest.py. --- src/tox/pytest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tox/pytest.py b/src/tox/pytest.py index 21cd816ad..ae2112525 100644 --- a/src/tox/pytest.py +++ b/src/tox/pytest.py @@ -161,7 +161,7 @@ def _setup_files(dest: Path, base: Path | None, content: dict[str, Any]) -> None at_path.mkdir(exist_ok=True) ToxProject._setup_files(at_path, None, value) elif isinstance(value, str): - at_path.write_text(textwrap.dedent(value)) + at_path.write_text(textwrap.dedent(value), encoding="utf-8") elif value is None: at_path.mkdir() else: