-
-
Notifications
You must be signed in to change notification settings - Fork 541
Description
We discovered an unexpected error with tox plugins. Using both installed plugins and requires keyword may cause local plugins to be disabled. When requires is used and it contains a tox plugin (or tox or anything else which installs tox) internally that tox in runned later on and as a consequence it doesn't contain locally installed plugins. This seems to be a bug, since tox itself confirms local plugins are active.
Also I should mention that using both is legitimate, since requires specifies plugins related to the project itself whereas local plugins can be used to the developers environment/habits/tools etc.
Example
Have tox with tox-ipdb-plugin installed (it installs ipdb to all tox envs - handy for debugging) and tox.ini as follows:
[tox]
requires =
tox-envlist
[testenv]
commands =
python -c "import ipdb; print(ipdb)"Then the run will fail with
.tox create: /tmp/tox-pokus/.tox/.tox
.tox installdeps: tox-envlist, tox >= 3.23.0
py310 create: /tmp/tox-pokus/.tox/py310
py310 run-test-pre: PYTHONHASHSEED='4146503376'
py310 run-test: commands[0] | python -c 'import ipdb; print(ipdb)'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'ipdb'
ERROR: InvocationError for command /tmp/tox-pokus/.tox/py310/bin/python -c 'import ipdb; print(ipdb)' (exited with code 1)
________________________________________________________________________________________________ summary _________________________________________________________________________________________________
ERROR: py310: commands failed
The tox --version confirms I have tox-ipdb-plugin installed
3.23.0 imported from /home/vzima/.local/lib/python3.9/site-packages/tox/__init__.py
registered plugins:
tox-ipdb-plugin-0.1 at /home/vzima/.local/lib/python3.9/site-packages/tox_ipdb.py
(Tested on several versions of tox)
It works fine if I delete the tox-envlist from requires.
I'm not quite sure, how the solution should work, but in any case local plugins should keep working.