Skip to content

Commit

Permalink
Provision cwd (#2877)
Browse files Browse the repository at this point in the history
Fix #2876
  • Loading branch information
masenf authored Jan 17, 2023
1 parent 1ba0419 commit 2a87375
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 1 deletion.
7 changes: 7 additions & 0 deletions docs/changelog/2876.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
When executing via the provisioning environment (``.tox`` by default), run
``tox`` in working directory of the parent process.

Prior to this change (from tox 4.0.0), the provisioned ``tox`` would execute with
``{tox_root}`` as the working directory, which breaks when a relative path is
passed to ``-c`` or ``--conf`` and ``tox`` is executed in a working directory
other than ``{tox_root}`` - by :user:`masenf`.
2 changes: 1 addition & 1 deletion src/tox/provision.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,5 +150,5 @@ def run_provision(name: str, state: State) -> int:
raise HandledError(f"cannot provision tox environment {tox_env.conf['env_name']} because {exception}")
args: list[str] = [str(env_python), "-m", "tox"]
args.extend(state.args)
outcome = tox_env.execute(cmd=args, stdin=StdinSource.user_only(), show=True, run_id="provision")
outcome = tox_env.execute(cmd=args, stdin=StdinSource.user_only(), show=True, run_id="provision", cwd=Path.cwd())
return cast(int, outcome.exit_code)
14 changes: 14 additions & 0 deletions tests/test_provision.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,3 +212,17 @@ def test_provision_plugin_runner_in_provision(tox_project: ToxProjectCreator, tm
proj = tox_project({"tox.ini": "[tox]\nrequires=somepkg123xyz\n[testenv:.tox]\nrunner=example"})
with pytest.raises(KeyError, match="example"):
proj.run("r", "-e", "py", "--result-json", str(log))


@pytest.mark.integration()
@pytest.mark.usefixtures("_pypi_index_self")
@pytest.mark.parametrize("relative_path", [True, False], ids=["relative", "absolute"])
def test_provision_conf_file(tox_project: ToxProjectCreator, tmp_path: Path, relative_path: bool) -> None:
ini = "[tox]\nrequires = demo-pkg-inline\nskipsdist=true\n"
project = tox_project({"tox.ini": ini}, prj_path=tmp_path / "sub")
if relative_path:
conf_path = os.path.join(project.path.name, "tox.ini")
else:
conf_path = str(project.path / "tox.ini")
result = project.run("c", "--conf", conf_path, "-e", "py", from_cwd=tmp_path)
result.assert_success()

0 comments on commit 2a87375

Please sign in to comment.