-
-
Notifications
You must be signed in to change notification settings - Fork 541
Let tox run fail when all envs are skipped #2206
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov Report
@@ Coverage Diff @@
## rewrite #2206 +/- ##
========================================
Coverage 99.85% 99.85%
========================================
Files 157 157
Lines 8997 8999 +2
Branches 942 942
========================================
+ Hits 8984 8986 +2
Misses 3 3
Partials 10 10
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
@gaborbernat Thanks for the review! |
This never properly worked. After discussion, tox added support for my use case with --skip-missing-interpreters: tox-dev/tox#2206
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
This behavior change was introduced in tox-dev#2206 and fixed tox-dev#2195. Call it out in the upgrade docs. Signed-off-by: Stephen Finucane <stephen@that.guru>
In tox-dev#2206, we said that tox should fail if all envs are skipped. This is broken when only a single env runs. We print an error message but return 0. Correct this behavior. Signed-off-by: Stephen Finucane <stephen@that.guru> Closes: tox-dev#2827
This behavior change was introduced in tox-dev#2206 and fixed tox-dev#2195. Call it out in the upgrade docs. Signed-off-by: Stephen Finucane <stephen@that.guru>
In tox-dev#2206, we said that tox should fail if all envs are skipped. This is broken when only a single env runs. We print an error message but return 0. Correct this behavior. Signed-off-by: Stephen Finucane <stephen@that.guru> Closes: tox-dev#2827
fixes #2195
in message body