Skip to content

-p no:pluginname on pytest 2.9.x ignored on xdist slave node #1618

Closed

Description

@fizyk

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.

Activity

  1. added
    type: bugproblem that needs to be addressed
    status: criticalgrave problem or usability issue that affects lots of users
    on Jun 18, 2016
  2. nicoddemus commented on Jun 18, 2016

    @nicoddemus
    Member

    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.

  3. added
    type: enhancementnew feature or API change, should be merged into features branch
    topic: reportingrelated to terminal output and user-facing messages and errors
    good first issueeasy issue that is friendly to new contributor
    and removed
    type: bugproblem that needs to be addressed
    status: criticalgrave problem or usability issue that affects lots of users
    on Jun 21, 2016
  4. RonnyPfannschmidt commented on Jun 21, 2016

    @RonnyPfannschmidt
    Member

    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

  5. changed the title [-]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[/+] on Jun 21, 2016
  6. RonnyPfannschmidt commented on Jun 21, 2016

    @RonnyPfannschmidt
    Member

    after re-reading the message, there is probably more to it :)

  7. changed the title [-]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[/+] on Jun 21, 2016
  8. RonnyPfannschmidt commented on Jun 21, 2016

    @RonnyPfannschmidt
    Member

    a quick run down of the conditions

    • have a installed python plugin
    • disable it with -p no:my_entry_point
    • reenable it via the conftest, that happens after pytest-cov
    • watch xdist ignore the -p no:my_entry_point
  9. RonnyPfannschmidt commented on Jun 22, 2016

    @RonnyPfannschmidt
    Member

    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. 10 remaining items

  11. nicoddemus commented on Jun 26, 2016

    @nicoddemus
    Member

    @RonnyPfannschmidt how's the status on this issue?

  12. nicoddemus commented on Jun 26, 2016

    @nicoddemus
    Member

    Oh #1673 attempts to solve this.

  13. fizyk commented on Aug 21, 2016

    @fizyk
    Author

    @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?

  14. RonnyPfannschmidt commented on Aug 22, 2016

    @RonnyPfannschmidt
    Member

    The cause is that remote config initialization loads all plugins then scraps some

    Its a hard to fix one

  15. nicoddemus commented on Dec 17, 2020

    @nicoddemus
    Member

    I believe this has already been fixed with the config changes in pytest-xdist; if not we can reopen this later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: criticalgrave problem or usability issue that affects lots of userstopic: reportingrelated to terminal output and user-facing messages and errorstype: backward compatibilitymight present some backward compatibility issues which should be carefully noted in the changelogtype: bugproblem that needs to be addressedtype: enhancementnew feature or API change, should be merged into features branchtype: feature-branchnew feature or API change, should be merged into features branchtype: refactoringinternal improvements to the code

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions