Skip to content

Commit accbc84

Browse files
authored
Fix legacy devenv (#3019)
1 parent 1c2601b commit accbc84

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/tox/session/env_select.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ def __init__(self, state: State) -> None:
125125
self.on_empty_fallback_py = True
126126
self._warned_about: set[str] = set() #: shared set of skipped environments that were already warned about
127127
self._state = state
128-
self._cli_envs: CliEnv | None = getattr(self._state.conf.options, "env", None)
129128
self._defined_envs_: None | dict[str, _ToxEnvInfo] = None
130129
self._pkg_env_counter: Counter[str] = Counter()
131130
from tox.plugin.manager import MANAGER
@@ -139,6 +138,10 @@ def __init__(self, state: State) -> None:
139138
tox_env_filter_regex = getattr(state.conf.options, "skip_env", "").strip()
140139
self._filter_re = re.compile(tox_env_filter_regex) if tox_env_filter_regex else None
141140

141+
@property
142+
def _cli_envs(self) -> CliEnv | None:
143+
return getattr(self._state.conf.options, "env", None)
144+
142145
def _collect_names(self) -> Iterator[tuple[Iterable[str], bool]]:
143146
""":return: sources of tox environments defined with name and if is marked as target to run"""
144147
if self._provision is not None: # pragma: no branch

tests/session/test_env_select.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import pytest
44

5+
from tox.config.cli.parse import get_options
56
from tox.pytest import MonkeyPatch, ToxProjectCreator
7+
from tox.session.env_select import CliEnv, EnvSelector
8+
from tox.session.state import State
69

710

811
def test_label_core_can_define(tox_project: ToxProjectCreator) -> None:
@@ -117,3 +120,11 @@ def test_tox_skip_env_logs(tox_project: ToxProjectCreator, monkeypatch: MonkeyPa
117120
outcome = project.run("l", "--no-desc")
118121
outcome.assert_success()
119122
outcome.assert_out_err("ROOT: skip environment mypy, matches filter 'm[y]py'\npy310\npy39\n", "")
123+
124+
125+
def test_env_select_lazily_looks_at_envs() -> None:
126+
state = State(get_options(), [])
127+
env_selector = EnvSelector(state)
128+
# late-assigning env should be reflected in env_selector
129+
state.conf.options.env = CliEnv("py")
130+
assert set(env_selector.iter()) == {"py"}

0 commit comments

Comments
 (0)