From 830a93f463b1b3690e2642ef1d3c14f6b2bbffe1 Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Fri, 30 Dec 2022 06:39:47 +0300 Subject: [PATCH 1/3] Fix --skip-missing-interpreters --- docs/changelog/2195.bugfix.rst | 1 + src/tox/session/cmd/run/single.py | 1 + src/tox/tox_env/python/runner.py | 9 +++++++++ tests/tox_env/python/test_python_runner.py | 12 ++++++++++++ 4 files changed, 23 insertions(+) create mode 100644 docs/changelog/2195.bugfix.rst diff --git a/docs/changelog/2195.bugfix.rst b/docs/changelog/2195.bugfix.rst new file mode 100644 index 000000000..048741655 --- /dev/null +++ b/docs/changelog/2195.bugfix.rst @@ -0,0 +1 @@ +Fix ``--skip-missing-interpreters`` behaviour - by :user:`q0w`. diff --git a/src/tox/session/cmd/run/single.py b/src/tox/session/cmd/run/single.py index 9ef909d10..15c4b6142 100644 --- a/src/tox/session/cmd/run/single.py +++ b/src/tox/session/cmd/run/single.py @@ -46,6 +46,7 @@ def _evaluate(tox_env: RunToxEnv, no_test: bool) -> tuple[bool, int, list[Outcom code, outcomes = run_commands(tox_env, no_test) except Skip as exception: LOGGER.warning("skipped because %s", exception) + code = 0 skipped = True except ToxBackendFailed as exception: LOGGER.error("%s", exception) diff --git a/src/tox/tox_env/python/runner.py b/src/tox/tox_env/python/runner.py index 040110f7b..81d36b021 100644 --- a/src/tox/tox_env/python/runner.py +++ b/src/tox/tox_env/python/runner.py @@ -13,6 +13,7 @@ from tox.tox_env.package import Package from tox.tox_env.python.pip.req_file import PythonDeps +from ...config.loader.str_convert import StrConvert from ..api import ToxEnvCreateArgs from ..runner import RunToxEnv from .api import Python @@ -32,10 +33,18 @@ def register_config(self) -> None: default=PythonDeps("", root), desc="Name of the python dependencies as specified by PEP-440", ) + + def skip_missing_interpreters_post_process(value: bool) -> bool: + if getattr(self.options, "skip_missing_interpreters", "config") != "config": + to_skip = StrConvert().to_bool(self.options.skip_missing_interpreters) + return to_skip + return value + self.core.add_config( keys=["skip_missing_interpreters"], default=True, of_type=bool, + post_process=skip_missing_interpreters_post_process, desc="skip running missing interpreters", ) diff --git a/tests/tox_env/python/test_python_runner.py b/tests/tox_env/python/test_python_runner.py index 93d5e4978..eca65b2d9 100644 --- a/tests/tox_env/python/test_python_runner.py +++ b/tests/tox_env/python/test_python_runner.py @@ -1,5 +1,6 @@ from __future__ import annotations +import sys from pathlib import Path import pytest @@ -121,3 +122,14 @@ def test_extras_are_normalized( result = project.run("c", "-e", "py", "--root", str(demo_pkg_inline), "-k", "extras") result.assert_success() assert result.out == f"[testenv:py]\nextras = {used_extra}\n" + + +@pytest.mark.parametrize( + ("config", "cli", "expected"), + [("false", "true", True), ("true", "false", False), ("false", "config", False), ("true", "config", True)], +) +def test_config_skip_missing_interpreters(tox_project: ToxProjectCreator, config: str, cli: str, expected: str) -> None: + py_ver = ".".join(str(i) for i in sys.version_info[0:2]) + project = tox_project({"tox.ini": f"[tox]\nenvlist=py4,py{py_ver}\nskip_missing_interpreters={config}"}) + result = project.run("--skip-missing-interpreters", cli) + assert result.code == 0 if expected else 1 From b034a66744973d9b13dd6de89edc0704d25e69ba Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Fri, 30 Dec 2022 06:42:06 +0300 Subject: [PATCH 2/3] Fix --skip-missing-interpreters --- src/tox/tox_env/python/runner.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tox/tox_env/python/runner.py b/src/tox/tox_env/python/runner.py index 81d36b021..d02881c9c 100644 --- a/src/tox/tox_env/python/runner.py +++ b/src/tox/tox_env/python/runner.py @@ -36,8 +36,7 @@ def register_config(self) -> None: def skip_missing_interpreters_post_process(value: bool) -> bool: if getattr(self.options, "skip_missing_interpreters", "config") != "config": - to_skip = StrConvert().to_bool(self.options.skip_missing_interpreters) - return to_skip + return StrConvert().to_bool(self.options.skip_missing_interpreters) return value self.core.add_config( From 6f4756880ec4386e29ebd05031e57f4125635746 Mon Sep 17 00:00:00 2001 From: q0w <43147888+q0w@users.noreply.github.com> Date: Fri, 30 Dec 2022 06:43:45 +0300 Subject: [PATCH 3/3] Fix --skip-missing-interpreters --- docs/changelog/{2195.bugfix.rst => 2649.bugfix.rst} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/changelog/{2195.bugfix.rst => 2649.bugfix.rst} (100%) diff --git a/docs/changelog/2195.bugfix.rst b/docs/changelog/2649.bugfix.rst similarity index 100% rename from docs/changelog/2195.bugfix.rst rename to docs/changelog/2649.bugfix.rst