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. 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: 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(): 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()