We were correctly raising the Skip or NoInterpreter exceptions upon
first access of the 'base_python' property of the 'Python' class,
however, subsequent calls would simply return None. This meant we did
not trigger our exception flow as expected and resulted in a traceback
like so:
❯ tox --skip-missing-interpreter=true -e py33
py33: internal error
Traceback (most recent call last):
File "/tox/src/tox/session/cmd/run/single.py", line 45, in _evaluate
tox_env.setup()
File "/tox/src/tox/tox_env/api.py", line 248, in setup
self._setup_env()
File "/tox/src/tox/tox_env/python/runner.py", line 106, in _setup_env
super()._setup_env()
File "/tox/src/tox/tox_env/python/api.py", line 186, in _setup_env
self.ensure_python_env()
File "/tox/src/tox/tox_env/python/api.py", line 190, in ensure_python_env
conf = self.python_cache()
^^^^^^^^^^^^^^^^^^^
File "/tox/src/tox/tox_env/python/virtual_env/api.py", line 77, in python_cache
base = super().python_cache()
^^^^^^^^^^^^^^^^^^^^^^
File "/tox/src/tox/tox_env/python/api.py", line 228, in python_cache
"version_info": list(self.base_python.version_info),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'version_info'
py33: FAIL code 2 (0.00 seconds)
evaluation failed :( (0.06 seconds)
(from an environment without Python 3.3)
Correct this so that we also raise these exceptions on subsequent
accesses.
❯ tox --skip-missing-interpreter=true -e py33
py33: skipped because could not find python interpreter with spec(s): py33
py33: SKIP (0.00 seconds)
evaluation failed :( (0.06 seconds)
Note that this fix emphasises a change in behavior in tox 4. With the
above configuration, tox 3 would have skipped the environment a reported
success. By comparison, tox 4 reports a failure. This behavior change
was introduced in tox-dev#2206. A future change will note this in the
documentation.
Also note that this is still not complete. Running the above command
with '--skip-missing-interpreters=false' instead will currently result
in an unhandled exception. This is an existing issue that will need to
be addressed separately.
Signed-off-by: Stephen Finucane <stephen@that.guru>
Closes: tox-dev#2826