Skip to content

Commit

Permalink
Fix provisioning
Browse files Browse the repository at this point in the history
Signed-off-by: Bernát Gábor <bgabor8@bloomberg.net>
  • Loading branch information
gaborbernat committed Dec 19, 2022
1 parent 968ea7d commit 48830e8
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 11 deletions.
11 changes: 6 additions & 5 deletions src/tox/provision.py
Expand Up @@ -62,7 +62,7 @@ def provision(state: State) -> int | bool:
keys=["min_version", "minversion"],
of_type=Version,
# do not include local version specifier (because it's not allowed in version spec per PEP-440)
default=Version("4.0"),
default=None, # type: ignore # Optional[Version] translates to object
desc="Define the minimal tox version required to run",
)
state.conf.core.add_config(
Expand All @@ -72,10 +72,10 @@ def provision(state: State) -> int | bool:
desc="Name of the virtual environment used to provision a tox.",
)

def add_tox_requires_min_version(requires: list[Requirement]) -> list[Requirement]:
def add_tox_requires_min_version(reqs: list[Requirement]) -> list[Requirement]:
min_version: Version = state.conf.core["min_version"]
requires.append(Requirement(f"tox >= {min_version}"))
return requires
reqs.append(Requirement(f"tox{f'>={min_version}' if min_version else ''}"))
return reqs

state.conf.core.add_config(
keys="requires",
Expand Down Expand Up @@ -113,8 +113,9 @@ def add_tox_requires_min_version(requires: list[Requirement]) -> list[Requiremen
msg = f"provisioning explicitly disabled within {sys.executable}, but {miss_msg}"
if isinstance(no_provision, str):
msg += f" and wrote to {no_provision}"
min_version = str(next(i.specifier for i in requires if i.name == "tox")).split("=")
requires_dict = {
"minversion": str(next(i.specifier for i in requires if i.name == "tox")).split("=")[1],
"minversion": min_version[1] if len(min_version) >= 2 else None,
"requires": [str(i) for i in requires],
}
Path(no_provision).write_text(json.dumps(requires_dict, indent=4))
Expand Down
8 changes: 3 additions & 5 deletions src/tox/session/env_select.py
Expand Up @@ -232,11 +232,9 @@ def _finalize_config(self) -> None:
def _build_run_env(self, name: str) -> RunToxEnv | None:
if self._provision is not None and self._provision[0] is False and name == self._provision[1]:
return None
env_conf = self._state.conf.get_env(
name,
package=False,
loaders=[self._provision[2]] if self._provision is not None and self._provision[1] == name else None,
)
env_conf = self._state.conf.get_env(name, package=False)
if self._provision is not None and self._provision[1] == name:
env_conf.loaders.insert(0, self._provision[2])
desc = "the tox execute used to evaluate this environment"
env_conf.add_config(keys="runner", desc=desc, of_type=str, default=self._state.conf.options.default_runner)
runner = REGISTER.runner(cast(str, env_conf["runner"]))
Expand Down
2 changes: 1 addition & 1 deletion tests/test_provision.py
Expand Up @@ -186,4 +186,4 @@ def test_provision_no_recreate_json(tox_project: ToxProjectCreator) -> None:
assert msg in result.out
with (project.path / "out.json").open() as file_handler:
requires = json.load(file_handler)
assert requires == {"minversion": "4.0", "requires": ["p", "tox>=4.0"]}
assert requires == {"minversion": None, "requires": ["p", "tox"]}

0 comments on commit 48830e8

Please sign in to comment.