diff options
author | Bernát Gábor <gaborjbernat@gmail.com> | 2022-12-08 08:07:09 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-08 08:07:09 -0800 |
commit | 31ad830867490e7b69a65605d919104f8b18fb7d (patch) | |
tree | 5eb16a20045704b7bb69eda0c1f70cf6f988a974 | |
parent | 267d3275ad929b12e951dc8a6d2b73aa3e61b168 (diff) | |
download | tox-git-31ad830867490e7b69a65605d919104f8b18fb7d.tar.gz |
Ensure change_dir is created before running commands (#2643)
Resolves https://github.com/tox-dev/tox/issues/2620
-rw-r--r-- | docs/changelog/2620.bugfix.rst | 1 | ||||
-rw-r--r-- | src/tox/session/cmd/run/single.py | 1 | ||||
-rw-r--r-- | tests/tox_env/test_tox_env_api.py | 7 |
3 files changed, 9 insertions, 0 deletions
diff --git a/docs/changelog/2620.bugfix.rst b/docs/changelog/2620.bugfix.rst new file mode 100644 index 00000000..ba4c5bd5 --- /dev/null +++ b/docs/changelog/2620.bugfix.rst @@ -0,0 +1 @@ +Ensure :ref:`change_dir` is created if does not exist before executing :ref:`commands` - by :user:`gaborbernat`. diff --git a/src/tox/session/cmd/run/single.py b/src/tox/session/cmd/run/single.py index 9cc3e45e..9ef909d1 100644 --- a/src/tox/session/cmd/run/single.py +++ b/src/tox/session/cmd/run/single.py @@ -71,6 +71,7 @@ def run_commands(tox_env: RunToxEnv, no_test: bool) -> tuple[int, list[Outcome]] from tox.plugin.manager import MANAGER # importing this here to avoid circular import chdir: Path = tox_env.conf["change_dir"] + chdir.mkdir(exist_ok=True, parents=True) ignore_errors: bool = tox_env.conf["ignore_errors"] MANAGER.tox_before_run_commands(tox_env) status_pre, status_main, status_post = -1, -1, -1 diff --git a/tests/tox_env/test_tox_env_api.py b/tests/tox_env/test_tox_env_api.py index c5542dbc..2c467bb6 100644 --- a/tests/tox_env/test_tox_env_api.py +++ b/tests/tox_env/test_tox_env_api.py @@ -86,3 +86,10 @@ def test_tox_env_pass_env_match_ignore_case(char: str, glob: str) -> None: with patch("os.environ", {"A1": "1", "a2": "2", "A2": "3", "B": "4"}): env = ToxEnv._load_pass_env([f"{char}{glob}"]) assert env == {"A1": "1", "a2": "2", "A2": "3"} + + +def test_change_dir_is_created_if_not_exist(tox_project: ToxProjectCreator) -> None: + prj = tox_project({"tox.ini": "[testenv]\npackage=skip\nchange_dir=a{/}b\ncommands=python --version"}) + result_first = prj.run("r") + result_first.assert_success() + assert (prj.path / "a" / "b").exists() |