Skip to content

Commit 9017a26

Browse files
committed
Tests
1 parent e155c6d commit 9017a26

File tree

1 file changed

+33
-7
lines changed

1 file changed

+33
-7
lines changed

tests/config/test_set_env.py

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
from pathlib import Path
4-
from typing import TYPE_CHECKING, Any
4+
from typing import TYPE_CHECKING, Any, Literal
55
from unittest.mock import ANY
66

77
import pytest
@@ -51,19 +51,31 @@ def test_set_env_bad_line() -> None:
5151
SetEnv("A", "py", "py", Path())
5252

5353

54+
_ConfType = Literal["ini", "toml"]
55+
56+
5457
class EvalSetEnv(Protocol):
5558
def __call__(
5659
self,
57-
tox_ini: str,
60+
config: str,
61+
conf_type: _ConfType = "ini",
5862
extra_files: dict[str, Any] | None = ...,
5963
from_cwd: Path | None = ...,
6064
) -> SetEnv: ...
6165

6266

6367
@pytest.fixture
6468
def eval_set_env(tox_project: ToxProjectCreator) -> EvalSetEnv:
65-
def func(tox_ini: str, extra_files: dict[str, Any] | None = None, from_cwd: Path | None = None) -> SetEnv:
66-
prj = tox_project({"tox.ini": tox_ini, **(extra_files or {})})
69+
def func(
70+
config: str,
71+
conf_type: _ConfType = "ini",
72+
extra_files: dict[str, Any] | None = None,
73+
from_cwd: Path | None = None,
74+
) -> SetEnv:
75+
if conf_type == "ini":
76+
prj = tox_project({"tox.ini": config, **(extra_files or {})})
77+
else:
78+
prj = tox_project({"tox.toml": config, **(extra_files or {})})
6779
result = prj.run("c", "-k", "set_env", "-e", "py", from_cwd=None if from_cwd is None else prj.path / from_cwd)
6880
result.assert_success()
6981
set_env: SetEnv = result.env_conf("py")["set_env"]
@@ -149,7 +161,19 @@ def test_set_env_honor_override(eval_set_env: EvalSetEnv) -> None:
149161
assert set_env.load("PIP_DISABLE_PIP_VERSION_CHECK") == "0"
150162

151163

152-
def test_set_env_environment_file(eval_set_env: EvalSetEnv) -> None:
164+
@pytest.mark.parametrize(
165+
("conf_type", "config"),
166+
[
167+
("ini", "[testenv]\npackage=skip\nset_env=file|A{/}a.txt\nchange_dir=C"),
168+
("toml", '[env_run_base]\npackage="skip"\nset_env="file|A{/}a.txt"\nchange_dir="C"'),
169+
# Using monkeypatched env setting as a reference
170+
("ini", "[testenv]\npackage=skip\nset_env=file|{env:myenvfile}\nchange_dir=C"),
171+
("toml", '[env_run_base]\npackage="skip"\nset_env="file|{env:myenvfile}"\nchange_dir="C"'),
172+
],
173+
)
174+
def test_set_env_environment_file(
175+
conf_type: _ConfType, config: str, eval_set_env: EvalSetEnv, monkeypatch: MonkeyPatch
176+
) -> None:
153177
env_file = """
154178
A=1
155179
B= 2
@@ -158,9 +182,11 @@ def test_set_env_environment_file(eval_set_env: EvalSetEnv) -> None:
158182
E = "1"
159183
F =
160184
"""
185+
# Monkeypatch only used for some of the parameters
186+
monkeypatch.setenv("myenvfile", "A{/}a.txt")
187+
161188
extra = {"A": {"a.txt": env_file}, "B": None, "C": None}
162-
ini = "[testenv]\npackage=skip\nset_env=file|A{/}a.txt\nchange_dir=C"
163-
set_env = eval_set_env(ini, extra_files=extra, from_cwd=Path("B"))
189+
set_env = eval_set_env(config, conf_type=conf_type, extra_files=extra, from_cwd=Path("B"))
164190
content = {k: set_env.load(k) for k in set_env}
165191
assert content == {
166192
"PIP_DISABLE_PIP_VERSION_CHECK": "1",

0 commit comments

Comments
 (0)