Skip to content

Commit

Permalink
Override toxworkdir with --workdir. (#2776)
Browse files Browse the repository at this point in the history
* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.

* Override toxworkdir with --workdir.
  • Loading branch information
q0w committed Dec 26, 2022
1 parent a36ff9d commit bf87bea
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/changelog/2654.bugfix.rst
@@ -0,0 +1 @@
Override toxworkdir with --workdir.
4 changes: 4 additions & 0 deletions src/tox/config/sets.py
Expand Up @@ -191,10 +191,14 @@ def register_config(self) -> None:
def work_dir_builder(conf: Config, env_name: str | None) -> Path: # noqa: U100
return (conf.work_dir if conf.work_dir is not None else cast(Path, self["tox_root"])) / ".tox"

def work_dir_post_process(value: Path) -> Path:
return self._conf.work_dir if self._conf.options.work_dir else value

self.add_config(
keys=["work_dir", "toxworkdir"],
of_type=Path,
default=work_dir_builder,
post_process=work_dir_post_process,
desc="working directory",
)
self.add_config(
Expand Down
8 changes: 8 additions & 0 deletions tests/config/test_sets.py
Expand Up @@ -171,3 +171,11 @@ def test_set_env_raises_on_non_str(mocker: MockerFixture) -> None:
env_set.loaders.insert(0, MemoryLoader(set_env=1))
with pytest.raises(TypeError, match="1"):
assert env_set["set_env"]


@pytest.mark.parametrize("work_dir", ["a", ""])
def test_config_work_dir(tox_project: ToxProjectCreator, work_dir: str) -> None:
project = tox_project({"tox.ini": "[tox]\ntoxworkdir=b"})
result = project.run("c", *(["--workdir", str(project.path / work_dir)] if work_dir else []))
expected = project.path / work_dir if work_dir else Path("b")
assert expected == result.state.conf.core["work_dir"]

0 comments on commit bf87bea

Please sign in to comment.