summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMasen Furer <m_github@0x26.net>2023-01-16 14:08:26 -0800
committerGitHub <noreply@github.com>2023-01-16 14:08:26 -0800
commite4c65bb1fef704aadc6192679f21a55dfeee9c62 (patch)
tree82b4a7637212019e4a9b8071d91af8cb23cb57dc /src
parenta2222e98b320467e821cf9444113e9b40ab3ad1b (diff)
downloadtox-git-e4c65bb1fef704aadc6192679f21a55dfeee9c62.tar.gz
Provision: ignore other test environments (#2865)
Fix https://github.com/tox-dev/tox/issues/2862
Diffstat (limited to 'src')
-rw-r--r--src/tox/provision.py3
-rw-r--r--src/tox/session/env_select.py13
2 files changed, 9 insertions, 7 deletions
diff --git a/src/tox/provision.py b/src/tox/provision.py
index 34b56d07..9b1aeba5 100644
--- a/src/tox/provision.py
+++ b/src/tox/provision.py
@@ -97,7 +97,8 @@ def provision(state: State) -> int | bool:
recreate=state.conf.options.recreate and not state.conf.options.no_recreate_provision,
)
provision_tox_env: str = state.conf.core["provision_tox_env"]
- state.envs._mark_provision(bool(missing), provision_tox_env, loader)
+ state.conf.memory_seed_loaders[provision_tox_env].append(loader)
+ state.envs._mark_provision(bool(missing), provision_tox_env)
from tox.plugin.manager import MANAGER
diff --git a/src/tox/session/env_select.py b/src/tox/session/env_select.py
index f926beda..52f11953 100644
--- a/src/tox/session/env_select.py
+++ b/src/tox/session/env_select.py
@@ -13,7 +13,6 @@ from tox.tox_env.api import ToxEnvCreateArgs
from tox.tox_env.register import REGISTER
from tox.tox_env.runner import RunToxEnv
-from ..config.loader.memory import MemoryLoader
from ..config.types import EnvList
from ..report import HandledError
from ..tox_env.errors import Skip
@@ -134,7 +133,7 @@ class EnvSelector:
self._manager = MANAGER
self._log_handler = self._state._options.log_handler
self._journal = self._state._journal
- self._provision: None | tuple[bool, str, MemoryLoader] = None
+ self._provision: None | tuple[bool, str] = None
self._state.conf.core.add_config("labels", Dict[str, EnvList], {}, "core labels")
tox_env_filter_regex = getattr(state.conf.options, "skip_env", "").strip()
@@ -242,10 +241,12 @@ class EnvSelector:
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]:
+ # ignore provision env unless this is a provision run
+ return None
+ if self._provision is not None and self._provision[0] and name != self._provision[1]:
+ # ignore other envs when this is a provision run
return 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"]))
@@ -367,8 +368,8 @@ class EnvSelector:
if invalid:
raise HandledError(f"cannot run packaging environment(s) {','.join(invalid)}")
- def _mark_provision(self, on: bool, provision_tox_env: str, loader: MemoryLoader) -> None:
- self._provision = on, provision_tox_env, loader
+ def _mark_provision(self, on: bool, provision_tox_env: str) -> None:
+ self._provision = on, provision_tox_env
__all__ = [