|
18 | 18 | from ..report import HandledError
|
19 | 19 | from ..tox_env.errors import Skip
|
20 | 20 | from ..tox_env.package import PackageToxEnv
|
| 21 | +from ..tox_env.python.virtual_env.runner import VirtualEnvRunner |
21 | 22 |
|
22 | 23 | if TYPE_CHECKING:
|
23 | 24 | from tox.session.state import State
|
@@ -241,13 +242,29 @@ def _finalize_config(self) -> None:
|
241 | 242 | self._state.conf.core.mark_finalized()
|
242 | 243 |
|
243 | 244 | def _build_run_env(self, name: str) -> RunToxEnv | None:
|
244 |
| - if self._provision is not None and self._provision[0] is False and name == self._provision[1]: |
| 245 | + provision_on = provision_tox_env = provision_loader = None |
| 246 | + if self._provision is not None: |
| 247 | + provision_on, provision_tox_env, provision_loader = self._provision |
| 248 | + if not provision_on and name == provision_tox_env: |
| 249 | + # not a provision run, so don't include provision env (.tox) as a run env |
| 250 | + return None |
| 251 | + if provision_on and name != provision_tox_env: |
| 252 | + # for provision run, don't consider any environment other than provision env |
245 | 253 | return None
|
246 | 254 | env_conf = self._state.conf.get_env(name, package=False)
|
247 |
| - if self._provision is not None and self._provision[1] == name: |
248 |
| - env_conf.loaders.insert(0, self._provision[2]) |
249 |
| - desc = "the tox execute used to evaluate this environment" |
250 |
| - env_conf.add_config(keys="runner", desc=desc, of_type=str, default=self._state.conf.options.default_runner) |
| 255 | + runner_key_desc = "the tox execute used to evaluate this environment" |
| 256 | + if name == provision_tox_env: |
| 257 | + if provision_loader is not None: |
| 258 | + env_conf.loaders.insert(0, provision_loader) |
| 259 | + # provision environment always runs with VirtualEnvRunner |
| 260 | + env_conf.add_constant(keys="runner", desc=runner_key_desc, value=VirtualEnvRunner.id()) |
| 261 | + else: |
| 262 | + env_conf.add_config( |
| 263 | + keys="runner", |
| 264 | + desc=runner_key_desc, |
| 265 | + of_type=str, |
| 266 | + default=self._state.conf.options.default_runner, |
| 267 | + ) |
251 | 268 | runner = REGISTER.runner(cast(str, env_conf["runner"]))
|
252 | 269 | journal = self._journal.get_env_journal(name)
|
253 | 270 | args = ToxEnvCreateArgs(env_conf, self._state.conf.core, self._state.conf.options, journal, self._log_handler)
|
|
0 commit comments