diff options
author | Bernát Gábor <bgabor8@bloomberg.net> | 2021-08-09 21:45:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-09 21:45:37 +0100 |
commit | ae97ef5d61c3b56c21009224ef732218b48947d8 (patch) | |
tree | 9a71bf30a4bc6f7ce17255f95b5cf16718ad4567 /src/tox/tox_env/api.py | |
parent | 929489b642df9fecb20a8182d6c663786de41c78 (diff) | |
download | tox-git-ae97ef5d61c3b56c21009224ef732218b48947d8.tar.gz |
Support CLI run flags for tox config (#2150)
Signed-off-by: Bernát Gábor <gaborjbernat@gmail.com>
Diffstat (limited to 'src/tox/tox_env/api.py')
-rw-r--r-- | src/tox/tox_env/api.py | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/tox/tox_env/api.py b/src/tox/tox_env/api.py index cbefea83..1ac32bdd 100644 --- a/src/tox/tox_env/api.py +++ b/src/tox/tox_env/api.py @@ -12,6 +12,7 @@ from io import BytesIO from pathlib import Path from typing import TYPE_CHECKING, Any, Dict, Iterator, List, Optional, Sequence, Tuple, Union, cast +from tox.config.main import Config from tox.config.set_env import SetEnv from tox.config.sets import CoreConfigSet, EnvConfigSet from tox.execute.api import Execute, ExecuteStatus, Outcome, StdinSource @@ -133,7 +134,7 @@ class ToxEnv(ABC): self.conf.add_config( "recreate", of_type=bool, - default=False, + default=self._recreate_default, desc="always recreate virtual environment if this option is true, otherwise leave it up to tox", ) self.conf.add_config( @@ -143,6 +144,9 @@ class ToxEnv(ABC): desc="external command glob to allow calling", ) + def _recreate_default(self, conf: "Config", value: Optional[str]) -> bool: # noqa: U100 + return cast(bool, self.options.recreate) + @property def env_dir(self) -> Path: """:return: the tox environments environment folder""" @@ -192,24 +196,22 @@ class ToxEnv(ABC): env.append("TMPDIR") # temporary file location return env - def setup(self, recreate: bool = False) -> None: + def setup(self) -> None: """ Setup the tox environment. - - :param recreate: flag to force recreation of the environment from scratch """ if self._run_state["setup"] is False: # pragma: no branch self._platform_check() - recreate = recreate or cast(bool, self.conf["recreate"]) + recreate = cast(bool, self.conf["recreate"]) if recreate: - self._clean() + self._clean(transitive=True) try: self._setup_env() self._setup_with_env() except Recreate as exception: # once we might try over if not recreate: # pragma: no cover logging.warning(f"recreate env because {exception.args[0]}") - self._clean(force=True) + self._clean(transitive=False) self._setup_env() self._setup_with_env() else: @@ -265,13 +267,14 @@ class ToxEnv(ABC): ensure_empty_dir(env_tmp_dir) env_tmp_dir.mkdir(parents=True, exist_ok=True) - def _clean(self, force: bool = False) -> None: # noqa: U100 + def _clean(self, transitive: bool = False) -> None: # noqa: U100 if self._run_state["clean"]: # pragma: no branch return # pragma: no cover env_dir = self.env_dir if env_dir.exists(): LOGGER.warning("remove tox env folder %s", env_dir) ensure_empty_dir(env_dir) + self._log_id = 0 # we deleted logs, so start over counter self.cache.reset() self._run_state.update({"setup": False, "clean": True}) |