Repository: tox-dev/tox

Issue:
tox4: missing interpreters are skipped by default
## Issue

tox4 skips missing interpreters and reports success even when `--skip-missing-interpreters` is not present.

## Environment

Provide at least:

- OS: macOS Ventura
- `pip list` of the host Python where `tox` is installed:

```console
Package           Version Editable project location
----------------- ------- -------------------------------------
attrs             22.1.0
cachetools        5.2.0
chardet           5.1.0
colorama          0.4.6
coverage          6.5.0
distlib           0.3.6
exceptiongroup    1.0.4
filelock          3.8.2
iniconfig         1.1.1
my-lovely-project 0.1.0   /Users/simon/source/my-lovely-project
packaging         22.0
pip               22.3.1
platformdirs      2.6.0
pluggy            1.0.0
pyproject_api     1.2.1
pytest            7.2.0
pytest-cov        4.0.0
pytest-mock       3.10.0
PyYAML            6.0
setuptools        65.5.1
tomli             2.0.1
tox               4.0.2
virtualenv        20.17.1
wheel             0.38.4
```
- `tox.ini`

```ini
[tox]
envlist = py38,py39,py310,py311
isolated_build=true

[testenv]
deps =
    -rbuild/requirements-with-dev.txt
commands =
    pytest --cov=my_lovely_project --cov-append --cov-branch

```

## Output of running tox

Provide the output of `tox -rvv`:

```console
.pkg: 432 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
.pkg: 433 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
.pkg: 433 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
.pkg: 433 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 433 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 433 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 433 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 433 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
.pkg: 433 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
.pkg: 433 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
.pkg: 434 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
.pkg: 434 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 434 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 434 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 434 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 434 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
.pkg: 434 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
.pkg: 434 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
.pkg: 434 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
.pkg: 434 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 434 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 434 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 435 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 435 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
.pkg: 435 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
.pkg: 435 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
.pkg: 435 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
.pkg: 435 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 435 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 435 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 435 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 435 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 435 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 436 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 436 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 436 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 436 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 441 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 441 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 441 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 441 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 441 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 441 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 441 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 441 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 441 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 441 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 441 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 442 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 442 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 442 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 442 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 442 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 442 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 442 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 442 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 442 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 442 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 442 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 442 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
ROOT: 442 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
ROOT: 442 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
ROOT: 442 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
ROOT: 442 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
py38: 443 W remove tox env folder /Users/simon/source/my-lovely-project/.tox/py38 [tox/tox_env/api.py:292]
py38: 444 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
py38: 444 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
py38: 444 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
py38: 444 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
py38: 444 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
py38: 444 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
py38: 444 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
py38: 444 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
.pkg: 444 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
.pkg: 445 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
.pkg: 445 W remove tox env folder /Users/simon/source/my-lovely-project/.tox/.pkg [tox/tox_env/api.py:292]
.pkg: 628 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
.pkg: 628 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
py38: 628 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
py38: 628 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
py38: 628 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
py38: 628 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
py38: 633 I find interpreter for spec PythonSpec(major=3, minor=8) [virtualenv/discovery/builtin.py:56]
py38: 633 D discover exe for PythonInfo(spec=CPython3.10.8.final.0-64, exe=/Users/simon/Library/Caches/pypoetry/virtualenvs/my-lovely-project-liKnIVLw-py3.10/bin/python, platform=darwin, version='3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]', encoding_fs_io=utf-8-utf-8) in /opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10 [virtualenv/discovery/py_info.py:437]
py38: 633 D filesystem is not case-sensitive [virtualenv/info.py:24]
py38: 634 D Attempting to acquire lock 4360118640 on /Users/simon/Library/Application Support/virtualenv/py_info/1/2d6cbd8ca062199a98662f3310ba6286764b31353ea4bf55baab4dae9f4129d0.lock [filelock/_api.py:172]
py38: 635 D Lock 4360118640 acquired on /Users/simon/Library/Application Support/virtualenv/py_info/1/2d6cbd8ca062199a98662f3310ba6286764b31353ea4bf55baab4dae9f4129d0.lock [filelock/_api.py:176]
py38: 635 D got python info of /opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/bin/python3.10 from /Users/simon/Library/Application Support/virtualenv/py_info/1/2d6cbd8ca062199a98662f3310ba6286764b31353ea4bf55baab4dae9f4129d0.json [virtualenv/app_data/via_disk_folder.py:129]
py38: 635 D Attempting to release lock 4360118640 on /Users/simon/Library/Application Support/virtualenv/py_info/1/2d6cbd8ca062199a98662f3310ba6286764b31353ea4bf55baab4dae9f4129d0.lock [filelock/_api.py:209]
py38: 635 D Lock 4360118640 released on /Users/simon/Library/Application Support/virtualenv/py_info/1/2d6cbd8ca062199a98662f3310ba6286764b31353ea4bf55baab4dae9f4129d0.lock [filelock/_api.py:212]
py38: 635 D Attempting to acquire lock 4360116768 on /Users/simon/Library/Application Support/virtualenv/py_info/1/eda7e54fe21129b67f77862937907ee926f057597a3e2fa1e18ac955e40912b3.lock [filelock/_api.py:172]
py38: 635 D Lock 4360116768 acquired on /Users/simon/Library/Application Support/virtualenv/py_info/1/eda7e54fe21129b67f77862937907ee926f057597a3e2fa1e18ac955e40912b3.lock [filelock/_api.py:176]
py38: 636 D got python info of /opt/homebrew/opt/python@3.10/bin/python3.10 from /Users/simon/Library/Application Support/virtualenv/py_info/1/eda7e54fe21129b67f77862937907ee926f057597a3e2fa1e18ac955e40912b3.json [virtualenv/app_data/via_disk_folder.py:129]
py38: 636 D Attempting to release lock 4360116768 on /Users/simon/Library/Application Support/virtualenv/py_info/1/eda7e54fe21129b67f77862937907ee926f057597a3e2fa1e18ac955e40912b3.lock [filelock/_api.py:209]
py38: 636 D Lock 4360116768 released on /Users/simon/Library/Application Support/virtualenv/py_info/1/eda7e54fe21129b67f77862937907ee926f057597a3e2fa1e18ac955e40912b3.lock [filelock/_api.py:212]
py38: 636 I proposed PythonInfo(spec=CPython3.10.8.final.0-64, system=/opt/homebrew/opt/python@3.10/bin/python3.10, exe=/Users/simon/Library/Caches/pypoetry/virtualenvs/my-lovely-project-liKnIVLw-py3.10/bin/python, platform=darwin, version='3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:63]
py38: 636 D discover PATH[0]=/Users/simon/Library/Caches/pypoetry/virtualenvs/my-lovely-project-liKnIVLw-py3.10/bin [virtualenv/discovery/builtin.py:108]
py38: 636 D Attempting to acquire lock 4360116720 on /Users/simon/Library/Application Support/virtualenv/py_info/1/afa8ded6870ac890efb860a4da2817f148454a0eabad8c0b7c2c00eca0cfaaf8.lock [filelock/_api.py:172]
py38: 636 D Lock 4360116720 acquired on /Users/simon/Library/Application Support/virtualenv/py_info/1/afa8ded6870ac890efb860a4da2817f148454a0eabad8c0b7c2c00eca0cfaaf8.lock [filelock/_api.py:176]
py38: 636 D got python info of /Users/simon/Library/Caches/pypoetry/virtualenvs/my-lovely-project-liKnIVLw-py3.10/bin/python3 from /Users/simon/Library/Application Support/virtualenv/py_info/1/afa8ded6870ac890efb860a4da2817f148454a0eabad8c0b7c2c00eca0cfaaf8.json [virtualenv/app_data/via_disk_folder.py:129]
py38: 637 D Attempting to release lock 4360116720 on /Users/simon/Library/Application Support/virtualenv/py_info/1/afa8ded6870ac890efb860a4da2817f148454a0eabad8c0b7c2c00eca0cfaaf8.lock [filelock/_api.py:209]
py38: 637 D Lock 4360116720 released on /Users/simon/Library/Application Support/virtualenv/py_info/1/afa8ded6870ac890efb860a4da2817f148454a0eabad8c0b7c2c00eca0cfaaf8.lock [filelock/_api.py:212]
py38: 637 D discover exe from cache /opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10 - exact False: PythonInfo({'architecture': 64, 'base_exec_prefix': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'base_prefix': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'distutils_install': {}, 'exec_prefix': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'executable': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/bin/python3.10', 'file_system_encoding': 'utf-8', 'has_venv': True, 'implementation': 'CPython', 'max_size': 9223372036854775807, 'original_executable': '/opt/homebrew/opt/python@3.10/bin/python3.10', 'os': 'posix', 'path': ['/Users/simon/.local/pipx/venvs/poetry/lib/python3.10/site-packages/virtualenv/discovery', '/opt/homebrew/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python310.zip', '/opt/homebrew/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10', '/opt/homebrew/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload', '/opt/homebrew/lib/python3.10/site-packages'], 'platform': 'darwin', 'prefix': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'real_prefix': None, 'stdout_encoding': 'utf-8', 'sysconfig': {'makefile_filename': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/lib/python3.10/config-3.10-darwin/Makefile'}, 'sysconfig_paths': {'data': '{base}', 'include': '{installed_base}/include/python{py_version_short}{abiflags}', 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages', 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}', 'purelib': '{base}/lib/python{py_version_short}/site-packages', 'scripts': '{base}/bin', 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}'}, 'sysconfig_scheme': 'venv', 'sysconfig_vars': {'PYTHONFRAMEWORK': 'Python', 'abiflags': '', 'base': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'installed_base': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'platbase': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'platlibdir': 'lib', 'py_version_short': '3.10'}, 'system_executable': '/opt/homebrew/opt/python@3.10/bin/python3.10', 'system_stdlib': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/lib/python3.10', 'system_stdlib_platform': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/lib/python3.10', 'version': '3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]', 'version_info': VersionInfo(major=3, minor=10, micro=8, releaselevel='final', serial=0), 'version_nodot': '310'}) [virtualenv/discovery/py_info.py:435]
py38: 637 D discover exe from cache /opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10 - exact False: PythonInfo({'architecture': 64, 'base_exec_prefix': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'base_prefix': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'distutils_install': {}, 'exec_prefix': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'executable': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/bin/python3.10', 'file_system_encoding': 'utf-8', 'has_venv': True, 'implementation': 'CPython', 'max_size': 9223372036854775807, 'original_executable': '/opt/homebrew/opt/python@3.10/bin/python3.10', 'os': 'posix', 'path': ['/Users/simon/.local/pipx/venvs/poetry/lib/python3.10/site-packages/virtualenv/discovery', '/opt/homebrew/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python310.zip', '/opt/homebrew/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10', '/opt/homebrew/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload', '/opt/homebrew/lib/python3.10/site-packages'], 'platform': 'darwin', 'prefix': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'real_prefix': None, 'stdout_encoding': 'utf-8', 'sysconfig': {'makefile_filename': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/lib/python3.10/config-3.10-darwin/Makefile'}, 'sysconfig_paths': {'data': '{base}', 'include': '{installed_base}/include/python{py_version_short}{abiflags}', 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages', 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}', 'purelib': '{base}/lib/python{py_version_short}/site-packages', 'scripts': '{base}/bin', 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}'}, 'sysconfig_scheme': 'venv', 'sysconfig_vars': {'PYTHONFRAMEWORK': 'Python', 'abiflags': '', 'base': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'installed_base': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'platbase': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10', 'platlibdir': 'lib', 'py_version_short': '3.10'}, 'system_executable': '/opt/homebrew/opt/python@3.10/bin/python3.10', 'system_stdlib': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/lib/python3.10', 'system_stdlib_platform': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/lib/python3.10', 'version': '3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]', 'version_info': VersionInfo(major=3, minor=10, micro=8, releaselevel='final', serial=0), 'version_nodot': '310'}) [virtualenv/discovery/py_info.py:435]
py38: 637 D discover PATH[1]=/Users/simon/.pyenv/shims [virtualenv/discovery/builtin.py:108]
py38: 637 D Attempting to acquire lock 4360116768 on /Users/simon/Library/Application Support/virtualenv/py_info/1/ca1106d8b15983dad15318348905b42c948bc2c8605c28a3b1bd76a76ad1f9de.lock [filelock/_api.py:172]
py38: 637 D Lock 4360116768 acquired on /Users/simon/Library/Application Support/virtualenv/py_info/1/ca1106d8b15983dad15318348905b42c948bc2c8605c28a3b1bd76a76ad1f9de.lock [filelock/_api.py:176]
py38: 638 D got python info of /Users/simon/.pyenv/shims/python3 from /Users/simon/Library/Application Support/virtualenv/py_info/1/ca1106d8b15983dad15318348905b42c948bc2c8605c28a3b1bd76a76ad1f9de.json [virtualenv/app_data/via_disk_folder.py:129]
py38: 638 D Attempting to release lock 4360116768 on /Users/simon/Library/Application Support/virtualenv/py_info/1/ca1106d8b15983dad15318348905b42c948bc2c8605c28a3b1bd76a76ad1f9de.lock [filelock/_api.py:209]
py38: 638 D Lock 4360116768 released on /Users/simon/Library/Application Support/virtualenv/py_info/1/ca1106d8b15983dad15318348905b42c948bc2c8605c28a3b1bd76a76ad1f9de.lock [filelock/_api.py:212]
py38: 638 D Attempting to acquire lock 4360118256 on /Users/simon/Library/Application Support/virtualenv/py_info/1/0211b3d9ee4d9940a347b9685a755fd54e8f3a4508b5935cec12786806c31a2e.lock [filelock/_api.py:172]
py38: 638 D Lock 4360118256 acquired on /Users/simon/Library/Application Support/virtualenv/py_info/1/0211b3d9ee4d9940a347b9685a755fd54e8f3a4508b5935cec12786806c31a2e.lock [filelock/_api.py:176]
py38: 638 D got python info of /Users/simon/.pyenv/versions/3.11.0/bin/python3 from /Users/simon/Library/Application Support/virtualenv/py_info/1/0211b3d9ee4d9940a347b9685a755fd54e8f3a4508b5935cec12786806c31a2e.json [virtualenv/app_data/via_disk_folder.py:129]
py38: 638 D Attempting to release lock 4360118256 on /Users/simon/Library/Application Support/virtualenv/py_info/1/0211b3d9ee4d9940a347b9685a755fd54e8f3a4508b5935cec12786806c31a2e.lock [filelock/_api.py:209]
py38: 639 D Lock 4360118256 released on /Users/simon/Library/Application Support/virtualenv/py_info/1/0211b3d9ee4d9940a347b9685a755fd54e8f3a4508b5935cec12786806c31a2e.lock [filelock/_api.py:212]
py38: 639 I proposed PathPythonInfo(spec=CPython3.11.0.final.0-64, system=/Users/simon/.pyenv/versions/3.11.0/bin/python3, exe=/Users/simon/.pyenv/shims/python3, platform=darwin, version='3.11.0 (main, Nov  3 2022, 21:39:22) [Clang 14.0.0 (clang-1400.0.29.202)]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:63]
py38: 639 D Attempting to acquire lock 4360126272 on /Users/simon/Library/Application Support/virtualenv/py_info/1/047ae90f408a933ad48bddadac0fc0b38b2fe9c584dc18c2aa07afe05ab44ed7.lock [filelock/_api.py:172]
py38: 639 D Lock 4360126272 acquired on /Users/simon/Library/Application Support/virtualenv/py_info/1/047ae90f408a933ad48bddadac0fc0b38b2fe9c584dc18c2aa07afe05ab44ed7.lock [filelock/_api.py:176]
py38: 639 D got python info of /Users/simon/.pyenv/shims/python from /Users/simon/Library/Application Support/virtualenv/py_info/1/047ae90f408a933ad48bddadac0fc0b38b2fe9c584dc18c2aa07afe05ab44ed7.json [virtualenv/app_data/via_disk_folder.py:129]
py38: 640 D Attempting to release lock 4360126272 on /Users/simon/Library/Application Support/virtualenv/py_info/1/047ae90f408a933ad48bddadac0fc0b38b2fe9c584dc18c2aa07afe05ab44ed7.lock [filelock/_api.py:209]
py38: 640 D Lock 4360126272 released on /Users/simon/Library/Application Support/virtualenv/py_info/1/047ae90f408a933ad48bddadac0fc0b38b2fe9c584dc18c2aa07afe05ab44ed7.lock [filelock/_api.py:212]
py38: 641 D Attempting to acquire lock 4360118256 on /Users/simon/Library/Application Support/virtualenv/py_info/1/280ae2c263cad9615abede0001454291db14a5f307ee1e336366e6047843b90c.lock [filelock/_api.py:172]
py38: 641 D Lock 4360118256 acquired on /Users/simon/Library/Application Support/virtualenv/py_info/1/280ae2c263cad9615abede0001454291db14a5f307ee1e336366e6047843b90c.lock [filelock/_api.py:176]
py38: 641 D got python info of /Users/simon/.pyenv/versions/3.11.0/bin/python from /Users/simon/Library/Application Support/virtualenv/py_info/1/280ae2c263cad9615abede0001454291db14a5f307ee1e336366e6047843b90c.json [virtualenv/app_data/via_disk_folder.py:129]
py38: 642 D Attempting to release lock 4360118256 on /Users/simon/Library/Application Support/virtualenv/py_info/1/280ae2c263cad9615abede0001454291db14a5f307ee1e336366e6047843b90c.lock [filelock/_api.py:209]
py38: 642 D Lock 4360118256 released on /Users/simon/Library/Application Support/virtualenv/py_info/1/280ae2c263cad9615abede0001454291db14a5f307ee1e336366e6047843b90c.lock [filelock/_api.py:212]
py38: 642 I proposed PathPythonInfo(spec=CPython3.11.0.final.0-64, system=/Users/simon/.pyenv/versions/3.11.0/bin/python, exe=/Users/simon/.pyenv/shims/python, platform=darwin, version='3.11.0 (main, Nov  3 2022, 21:39:22) [Clang 14.0.0 (clang-1400.0.29.202)]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:63]
py38: 642 D discover PATH[2]=/opt/homebrew/bin [virtualenv/discovery/builtin.py:108]
py38: 642 D Attempting to acquire lock 4360503600 on /Users/simon/Library/Application Support/virtualenv/py_info/1/b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e.lock [filelock/_api.py:172]
py38: 642 D Lock 4360503600 acquired on /Users/simon/Library/Application Support/virtualenv/py_info/1/b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e.lock [filelock/_api.py:176]
py38: 642 D got python info of /opt/homebrew/bin/python3 from /Users/simon/Library/Application Support/virtualenv/py_info/1/b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e.json [virtualenv/app_data/via_disk_folder.py:129]
py38: 642 D Attempting to release lock 4360503600 on /Users/simon/Library/Application Support/virtualenv/py_info/1/b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e.lock [filelock/_api.py:209]
py38: 642 D Lock 4360503600 released on /Users/simon/Library/Application Support/virtualenv/py_info/1/b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e.lock [filelock/_api.py:212]
py38: 642 D discover PATH[3]=/opt/homebrew/sbin [virtualenv/discovery/builtin.py:108]
py38: 642 D discover PATH[4]=/usr/local/bin [virtualenv/discovery/builtin.py:108]
py38: 643 D discover PATH[5]=/System/Cryptexes/App/usr/bin [virtualenv/discovery/builtin.py:108]
py38: 643 D discover PATH[6]=/usr/bin [virtualenv/discovery/builtin.py:108]
py38: 643 D Attempting to acquire lock 4360503552 on /Users/simon/Library/Application Support/virtualenv/py_info/1/31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6.lock [filelock/_api.py:172]
py38: 643 D Lock 4360503552 acquired on /Users/simon/Library/Application Support/virtualenv/py_info/1/31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6.lock [filelock/_api.py:176]
py38: 643 D got python info of /usr/bin/python3 from /Users/simon/Library/Application Support/virtualenv/py_info/1/31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6.json [virtualenv/app_data/via_disk_folder.py:129]
py38: 643 D Attempting to release lock 4360503552 on /Users/simon/Library/Application Support/virtualenv/py_info/1/31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6.lock [filelock/_api.py:209]
py38: 643 D Lock 4360503552 released on /Users/simon/Library/Application Support/virtualenv/py_info/1/31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6.lock [filelock/_api.py:212]
py38: 643 D Attempting to acquire lock 4360503888 on /Users/simon/Library/Application Support/virtualenv/py_info/1/5edc29c2ed010d6458d71a83433b383a96a8cbd3efe8531bc90c4b8a5b8bcec9.lock [filelock/_api.py:172]
py38: 644 D Lock 4360503888 acquired on /Users/simon/Library/Application Support/virtualenv/py_info/1/5edc29c2ed010d6458d71a83433b383a96a8cbd3efe8531bc90c4b8a5b8bcec9.lock [filelock/_api.py:176]
py38: 644 D got python info of /Library/Developer/CommandLineTools/usr/bin/python3 from /Users/simon/Library/Application Support/virtualenv/py_info/1/5edc29c2ed010d6458d71a83433b383a96a8cbd3efe8531bc90c4b8a5b8bcec9.json [virtualenv/app_data/via_disk_folder.py:129]
py38: 644 D Attempting to release lock 4360503888 on /Users/simon/Library/Application Support/virtualenv/py_info/1/5edc29c2ed010d6458d71a83433b383a96a8cbd3efe8531bc90c4b8a5b8bcec9.lock [filelock/_api.py:209]
py38: 644 D Lock 4360503888 released on /Users/simon/Library/Application Support/virtualenv/py_info/1/5edc29c2ed010d6458d71a83433b383a96a8cbd3efe8531bc90c4b8a5b8bcec9.lock [filelock/_api.py:212]
py38: 644 I proposed PathPythonInfo(spec=CPython3.9.6.final.0-64, system=/Library/Developer/CommandLineTools/usr/bin/python3, exe=/usr/bin/python3, platform=darwin, version='3.9.6 (default, Sep 26 2022, 11:37:49) \n[Clang 14.0.0 (clang-1400.0.29.202)]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:63]
py38: 644 D discover PATH[7]=/bin [virtualenv/discovery/builtin.py:108]
py38: 644 D discover PATH[8]=/usr/sbin [virtualenv/discovery/builtin.py:108]
py38: 644 D discover PATH[9]=/sbin [virtualenv/discovery/builtin.py:108]
py38: 644 D discover PATH[10]=/Applications/VMware Fusion Tech Preview.app/Contents/Public [virtualenv/discovery/builtin.py:108]
py38: 644 D discover PATH[11]=/Users/simon/.local/bin [virtualenv/discovery/builtin.py:108]
py38: 644 W skipped because could not find python interpreter with spec(s): py38 [tox/session/cmd/run/single.py:48]
py38: 644 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
py38: 645 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
py38: 645 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
py38: 645 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
py38: 645 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
py38: 645 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
py38: 645 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
py38: 645 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
.pkg: 645 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
.pkg: 645 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
.pkg: 645 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
.pkg: 645 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
py38: 645 D Attempting to acquire lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:172]
py38: 645 D Lock 4359747520 acquired on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:176]
py38: 645 D Attempting to release lock 4359747520 on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:209]
py38: 645 D Lock 4359747520 released on /Users/simon/source/my-lovely-project/.tox/.pkg/file.lock [filelock/_api.py:212]
py38: SKIP ⚠ in 0.2 seconds

...........deleted a load here..................
  py38: SKIP (0.20 seconds)
  py39: OK (11.77=setup[10.59]+cmd[1.18] seconds)
  py310: OK (6.89=setup[6.18]+cmd[0.71] seconds)
  py311: OK (12.41=setup[11.47]+cmd[0.94] seconds)
  congratulations :) (31.46 seconds)
```

## Minimal example

If possible, provide a minimal reproducer for the issue:

Create a tox.ini specifying an interpreter you don't have and run it with tox4. Observe that you get the 'congratulations' message.


Discussion:

Patch:
diff --git a/docs/changelog/2649.bugfix.rst b/docs/changelog/2649.bugfix.rst
new file mode 100644
index 00000000..04874165
--- /dev/null
+++ b/docs/changelog/2649.bugfix.rst
@@ -0,0 +1,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 9ef909d1..15c4b614 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 040110f7..d02881c9 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.errors import Skip
 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,17 @@ class PythonRun(Python, RunToxEnv):
             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":
+                return StrConvert().to_bool(self.options.skip_missing_interpreters)
+            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",
         )
 


Test patch:
diff --git a/tests/tox_env/python/test_python_runner.py b/tests/tox_env/python/test_python_runner.py
index 93d5e497..eca65b2d 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