Repository navigation
-p no:pluginname on pytest 2.9.x ignored on xdist slave node #1618
Description
For pytest-dbfxitures plugin we run tests both with pytest-xdist and without to make sure we cover all the possibilities on travis. However, when running on xdist on pytest 2.9.x I get
argparse.ArgumentError: argument --dbfixtures-config: conflicting option string: --dbfixtures-config
to get the full coverage we run tests without the plugin (-p no:bfixtures) and import all pytest's plugins triggers in main conftest. It worked perfectly till the 2.9.x version, where it seems under xdist, the plugin is being loaded even thouth the options states it not to load.
alabaster (0.7.7)
apipkg (1.4)
Babel (2.2.0)
backports.shutil-get-terminal-size (1.0.0)
bumpversion (0.5.3)
coverage (4.1)
coveralls (1.1)
decorator (4.0.10)
docopt (0.6.2)
docutils (0.12)
execnet (1.4.1)
fancycompleter (0.4)
ipython (4.2.0)
ipython-genutils (0.1.0)
Jinja2 (2.8)
MarkupSafe (0.23)
mccabe (0.5.0)
mirakuru (0.7.0)
mock (2.0.0)
mysqlclient (1.3.7)
ordereddict (1.1)
pamqp (1.6.1)
path.py (8.2.1)
pbr (1.8.1)
pdbpp (0.8.3)
pep257 (0.7.0)
pep8 (1.7.0)
pexpect (4.1.0)
pickleshare (0.7.2)
pip (7.1.2)
port-for (0.3.1)
psycopg2 (2.6.1)
ptyprocess (0.5.1)
py (1.4.31)
pyaml (15.8.2)
pyflakes (1.2.3)
Pygments (2.1)
pylama (7.0.9)
pymlconf (0.4.0)
pymongo (3.2.2)
pytest (2.9.2)
pytest-cov (2.2.1)
pytest-dbfixtures (0.13.1)
pytest-xdist (1.14)
pytz (2015.7)
PyYAML (3.11)
rabbitpy (0.27.1)
redis (2.10.5)
requests (2.9.1)
setuptools (23.0.0)
simplegeneric (0.8.1)
six (1.10.0)
snowballstemmer (1.2.1)
Sphinx (1.3.5)
sphinx-rtd-theme (0.1.9)
traitlets (4.2.1)
wheel (0.24.0)
wmctrl (0.3)
py.test 2.9.2 and os is anything travis runs its tests on, and ubuntu 16.4
example https://github.com/ClearcodeHQ/pytest-dbfixtures and pull request I;m trying to upgreade the py.test on without sacrificing coverage.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsTo do
Activity
nicoddemus commentedon Jun 18, 2016
Thanks for the report!
I would guess the problem is that the option is not being interpreted correctly by the workers, but this needs more investigation.
RonnyPfannschmidt commentedon Jun 21, 2016
we finished the investigation, your conftest imports the plugin addoption function
so pytest sees an addoption hook in 2 different plugins, thus runs it twice and ends with an conflict
[-]Tests for pytest plugin fails in xdist when trying to run with -p no:plugin on pytest 2.9.x[/-][+]confusing/unhelpful errors when 2 plugin objects contain the same pytest_addoption hook[/+]RonnyPfannschmidt commentedon Jun 21, 2016
after re-reading the message, there is probably more to it :)
[-]confusing/unhelpful errors when 2 plugin objects contain the same pytest_addoption hook[/-][+] -p no:pluginname on pytest 2.9.x ignored on xdist slave node[/+]RonnyPfannschmidt commentedon Jun 21, 2016
a quick run down of the conditions
-p no:my_entry_point-p no:my_entry_pointRonnyPfannschmidt commentedon Jun 22, 2016
after finishing investigation the issue is enforced by plugin blockers in xdist only being interpreted after initial loading of setuptools plugins,
thus the plugin in dbfixtures gets loaded, then unloaded, but the effects of the addoption stay
the solution will be to fix the behavior of the utility method that is invoked on the remote
10 remaining items
nicoddemus commentedon Jun 26, 2016
@RonnyPfannschmidt how's the status on this issue?
nicoddemus commentedon Jun 26, 2016
Oh #1673 attempts to solve this.
fix issue pytest-dev#1618 by considering plugin args first
add changelog for pytest-dev#1618
refer the issue pytest-dev#1618 in the test
extend changelog entry for pytest-dev#1618
assert test execution outcome for pytest-dev#1618 test
fizyk commentedon Aug 21, 2016
@RonnyPfannschmidt I did notice much more detailed output with pytest 3.0.0 (https://travis-ci.org/ClearcodeHQ/pytest-elasticsearch/jobs/153690767) , but I wonder what should be the next steps in order to have it (help to get it) fixed?
RonnyPfannschmidt commentedon Aug 22, 2016
The cause is that remote config initialization loads all plugins then scraps some
Its a hard to fix one
Disable passing extra arguments option for pytest invocation for midd…
Disable passing extra arguments option for pytest invocation for midd…
nicoddemus commentedon Dec 17, 2020
I believe this has already been fixed with the config changes in pytest-xdist; if not we can reopen this later.