diff options
Diffstat (limited to 'tests/test_run.py')
-rw-r--r-- | tests/test_run.py | 78 |
1 files changed, 75 insertions, 3 deletions
diff --git a/tests/test_run.py b/tests/test_run.py index ca36f41f..bcb2be34 100644 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -1,5 +1,7 @@ from __future__ import annotations +from pathlib import Path + import pytest from pytest_mock import MockerFixture @@ -22,7 +24,77 @@ def test_re_raises_on_unexpected_exit(mocker: MockerFixture) -> None: run() -def test_custom_work_dir(tox_project: ToxProjectCreator) -> None: +def test_custom_work_dir(tox_project: ToxProjectCreator, tmp_path: Path) -> None: + project = tox_project({}) + + expected_tox_root = project.path + expected_work_dir = tmp_path + + outcome = project.run("c", "--workdir", str(expected_work_dir)) + outcome.assert_success() + + assert outcome.state.conf.options.work_dir == expected_work_dir, "should parse the --workdir argument" + + assert outcome.state.conf.core["work_dir"], f"should set work_dir to {expected_work_dir}" + + assert outcome.state.conf.core["tox_root"] == expected_tox_root, "should not update the value of tox_root" + assert outcome.state.conf.core["work_dir"] != ( + expected_tox_root / ".tox" + ), "should explicitly demonstrate that tox_root and work_dir are decoupled" + + # should update config values that depend on work_dir + assert outcome.state.conf.core["temp_dir"] == expected_work_dir / ".tmp" + + env_conf = outcome.state.conf.get_env("py") + + assert env_conf["env_dir"] == expected_work_dir / "py" + assert env_conf["env_log_dir"] == expected_work_dir / "py" / "log" + assert env_conf["env_tmp_dir"] == expected_work_dir / "py" / "tmp" + + +def test_custom_root_dir(tox_project: ToxProjectCreator, tmp_path: Path) -> None: + project = tox_project({}) + + expected_tox_root = tmp_path + expected_work_dir = expected_tox_root / ".tox" + + outcome = project.run("c", "--root", str(expected_tox_root)) + outcome.assert_success() + + assert outcome.state.conf.options.root_dir == expected_tox_root, "should parse the --root argument" + + assert outcome.state.conf.core["tox_root"] == expected_tox_root, f"should set tox_root to {expected_tox_root}" + + # values that depend on tox_root should also be updated + + assert outcome.state.conf.core["work_dir"] == expected_work_dir + assert outcome.state.conf.core["temp_dir"] == expected_work_dir / ".tmp" + + env_conf = outcome.state.conf.get_env("py") + + assert env_conf["env_dir"] == expected_work_dir / "py" + assert env_conf["env_log_dir"] == expected_work_dir / "py" / "log" + assert env_conf["env_tmp_dir"] == expected_work_dir / "py" / "tmp" + + +def test_custom_root_dir_and_work_dir(tox_project: ToxProjectCreator, tmp_path: Path) -> None: project = tox_project({}) - outcome = project.run("c", "--workdir", str(project.path.parent)) - assert outcome.state.conf.options.work_dir == project.path.parent + + expected_tox_root = tmp_path / "tox_root" + expected_work_dir = tmp_path / "work_dir" + + outcome = project.run("c", "--root", str(expected_tox_root), "--workdir", str(expected_work_dir)) + outcome.assert_success() + + assert outcome.state.conf.core["tox_root"] == expected_tox_root, f"should set tox_root to {expected_tox_root}" + assert outcome.state.conf.core["work_dir"] == expected_work_dir, f"should set work_dir to {expected_work_dir}" + + # values that depend on work_dir should also be updated + + assert outcome.state.conf.core["temp_dir"] == expected_work_dir / ".tmp" + + env_conf = outcome.state.conf.get_env("py") + + assert env_conf["env_dir"] == expected_work_dir / "py" + assert env_conf["env_log_dir"] == expected_work_dir / "py" / "log" + assert env_conf["env_tmp_dir"] == expected_work_dir / "py" / "tmp" |