Skip to content

Commit a9bfef3

Browse files
authored
Set always PYTHONIOENCODING to utf-8 (#2646)
Resolves #2422
1 parent ab5ea45 commit a9bfef3

File tree

4 files changed

+8
-4
lines changed

4 files changed

+8
-4
lines changed

docs/changelog/2422.bugfix.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Always set environment variable ``PYTHONIOENCODING`` to ``utf-8`` to ensure tox works under Windows custom encodings
2+
- by :user:`gaborbernat`.

src/tox/config/sets.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ def __init__(self, conf: Config, section: Section, env_name: str) -> None:
219219
def register_config(self) -> None:
220220
def set_env_post_process(values: SetEnv) -> SetEnv:
221221
values.update(self.default_set_env_loader(), override=False)
222+
values.update({"PYTHONIOENCODING": "utf-8"}, override=True)
222223
return values
223224

224225
def set_env_factory(raw: object) -> SetEnv:

tests/config/test_set_env.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ def func(tox_ini: str, extra_files: dict[str, Any] | None = None, from_cwd: Path
6060
def test_set_env_default(eval_set_env: EvalSetEnv) -> None:
6161
set_env = eval_set_env("")
6262
keys = list(set_env)
63-
assert keys == ["PIP_DISABLE_PIP_VERSION_CHECK"]
63+
assert keys == ["PIP_DISABLE_PIP_VERSION_CHECK", "PYTHONIOENCODING"]
6464
values = [set_env.load(k) for k in keys]
65-
assert values == ["1"]
65+
assert values == ["1", "utf-8"]
6666

6767

6868
def test_set_env_self_key(eval_set_env: EvalSetEnv, monkeypatch: MonkeyPatch) -> None:
@@ -120,7 +120,7 @@ def test_set_env_replacer(eval_set_env: EvalSetEnv, monkeypatch: MonkeyPatch) ->
120120
monkeypatch.setenv("MAGIC", "\nb=2\n")
121121
set_env = eval_set_env("[testenv]\npackage=skip\nset_env=a=1\n {env:MAGIC}")
122122
env = {k: set_env.load(k) for k in set_env}
123-
assert env == {"PIP_DISABLE_PIP_VERSION_CHECK": "1", "a": "1", "b": "2"}
123+
assert env == {"PIP_DISABLE_PIP_VERSION_CHECK": "1", "a": "1", "b": "2", "PYTHONIOENCODING": "utf-8"}
124124

125125

126126
def test_set_env_honor_override(eval_set_env: EvalSetEnv) -> None:
@@ -148,6 +148,7 @@ def test_set_env_environment_file(eval_set_env: EvalSetEnv) -> None:
148148
"C": "1",
149149
"E": '"1"',
150150
"F": "",
151+
"PYTHONIOENCODING": "utf-8",
151152
}
152153

153154

tests/session/cmd/test_show_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ def test_show_config_select_only(tox_project: ToxProjectCreator) -> None:
160160
def test_show_config_alias(tox_project: ToxProjectCreator) -> None:
161161
outcome = tox_project({"tox.ini": ""}).run("c", "-e", "py", "-k", "setenv")
162162
outcome.assert_success()
163-
assert "set_env = " in outcome.out
163+
assert "set_env =" in outcome.out
164164

165165

166166
def test_show_config_description_normalize(tox_project: ToxProjectCreator) -> None:

0 commit comments

Comments
 (0)