From 924e32c66a8452c1c67c07365f596f235206e35b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bern=C3=A1t=20G=C3=A1bor?= Date: Wed, 14 Dec 2022 18:44:28 -0800 Subject: [PATCH] PR feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bernát Gábor --- docs/changelog/2698.bugfix.rst | 3 +-- src/tox/session/env_select.py | 13 +++++-------- tests/session/test_env_select.py | 12 ++---------- 3 files changed, 8 insertions(+), 20 deletions(-) diff --git a/docs/changelog/2698.bugfix.rst b/docs/changelog/2698.bugfix.rst index 55534c50e..9a54940dc 100644 --- a/docs/changelog/2698.bugfix.rst +++ b/docs/changelog/2698.bugfix.rst @@ -1,2 +1 @@ -``TOX_SKIP_ENV`` environment variable now works again (it was unintentionally -broken in the tox 4.0.0 release) +``TOX_SKIP_ENV`` environment variable now works again - by :user:`mgedmin`. diff --git a/src/tox/session/env_select.py b/src/tox/session/env_select.py index 0ed76515d..22f0507e3 100644 --- a/src/tox/session/env_select.py +++ b/src/tox/session/env_select.py @@ -107,15 +107,12 @@ class _ToxEnvInfo: class EnvSelector: - - _warned_about: set[str] #: shared set of skipped environments that were already warned about - def __init__(self, state: State) -> None: # needs core to load the default tox environment list # to load the package environments of a run environments we need the run environment builder # to load labels we need core + the run environment self.on_empty_fallback_py = True - self._warned_about = set() + self._warned_about: set[str] = set() #: shared set of skipped environments that were already warned about self._state = state self._cli_envs: CliEnv | None = getattr(self._state.conf.options, "env", None) self._defined_envs_: None | dict[str, _ToxEnvInfo] = None @@ -128,6 +125,8 @@ def __init__(self, state: State) -> None: self._provision: None | tuple[bool, str, MemoryLoader] = None self._state.conf.core.add_config("labels", Dict[str, EnvList], {}, "core labels") + tox_env_filter_regex = os.environ.get("TOX_SKIP_ENV", "").strip() + self._filter_re = re.compile(tox_env_filter_regex) if tox_env_filter_regex else None def _collect_names(self) -> Iterator[tuple[Iterable[str], bool]]: """:return: sources of tox environments defined with name and if is marked as target to run""" @@ -330,17 +329,15 @@ def iter( :return: an iteration of tox environments """ - tox_env_filter = os.environ.get("TOX_SKIP_ENV") - tox_env_filter_re = re.compile(tox_env_filter) if tox_env_filter is not None else None for name, env_info in self._defined_envs.items(): if only_active and not env_info.is_active: continue if not package and not isinstance(env_info.env, RunToxEnv): continue - if tox_env_filter_re is not None and tox_env_filter_re.match(name): + if self._filter_re is not None and self._filter_re.match(name): if name not in self._warned_about: - LOGGER.warning("skip environment %s, matches filter %r", name, tox_env_filter_re.pattern) self._warned_about.add(name) + LOGGER.warning("skip environment %s, matches filter %r", name, self._filter_re.pattern) continue yield name diff --git a/tests/session/test_env_select.py b/tests/session/test_env_select.py index c500909a2..d565fca96 100644 --- a/tests/session/test_env_select.py +++ b/tests/session/test_env_select.py @@ -74,11 +74,7 @@ def test_factor_select(tox_project: ToxProjectCreator) -> None: def test_tox_skip_env(tox_project: ToxProjectCreator, monkeypatch: MonkeyPatch) -> None: monkeypatch.setenv("TOX_SKIP_ENV", "m[y]py") - ini = """ - [tox] - env_list = py3{10,9},mypy - """ - project = tox_project({"tox.ini": ini}) + project = tox_project({"tox.ini": "[tox]\nenv_list = py3{10,9},mypy"}) outcome = project.run("l", "--no-desc", "-q") outcome.assert_success() outcome.assert_out_err("py310\npy39\n", "") @@ -86,11 +82,7 @@ def test_tox_skip_env(tox_project: ToxProjectCreator, monkeypatch: MonkeyPatch) def test_tox_skip_env_logs(tox_project: ToxProjectCreator, monkeypatch: MonkeyPatch) -> None: monkeypatch.setenv("TOX_SKIP_ENV", "m[y]py") - ini = """ - [tox] - env_list = py3{10,9},mypy - """ - project = tox_project({"tox.ini": ini}) + project = tox_project({"tox.ini": "[tox]\nenv_list = py3{10,9},mypy"}) outcome = project.run("l", "--no-desc") outcome.assert_success() outcome.assert_out_err("ROOT: skip environment mypy, matches filter 'm[y]py'\npy310\npy39\n", "")