Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fail on mismatched python spec attributes
The following is intended to be a correct tox configuration: [tox] min_version = 4.1 env_list = py{38,39,310,311},docs [testenv] base_python = python3 [testenv:docs] commands = sphinx-build ... The goal of this is to use 'python3' (i.e. the value of '[testenv] base_python') for all environments except those with specific 'pyXX' factors in them. This helps eliminate issues where environments that do not specify a 'pyXX' factor run with different Python versions in different environments. An earlier bug, #477 [1], prevented us from doing this. Due to #477, the interpreter version indicated by '[testenv] base_python' (or rather '[testenv] basepython' - the underscore-separated variant was only introduced in tox 4) would override the value indicated by the 'pyXX' factor. This was resolved with a PR, #841 [2], which started warning users if they were unintentionally running against the wrong interpreter and introduced the 'ignore_basepython_conflict' value to opt into the correct behavior. Unfortunately, this has been broken in the move to tox 4. Currently, running with the above configuration will result in 'python3' being used for every environment. This is clearly incorrect. This issue stems from an errant bit of logic. When comparing interpreter versions as part of the '_validate_base_python', we ignore various attributes if they are unset on either '[testenv] base_python' or the 'pyXX' factor. This allows e.g. 'python3' to match 'python3.8', which isn't correct. Correct this by insisting on matching on all attributes that are set on the factor. [1] #477 [2] #841 Signed-off-by: Stephen Finucane <stephen@that.guru> Closes: #2754
- Loading branch information