Skip to content

Modifying xdist options - pytest_hookimpl(tryfirst=True) doesn't work #1270

@jsim-rode

Description

@jsim-rode

I am trying to add a new option to xdist's --dist flag. In my plugin.py file:

@pytest.hookimpl
def pytest_addoption(parser: pytest.Parser) -> None:
    # Modify the existing xdist 'dist' option to add our new scheduling mode
    group = parser.getgroup("xdist", "distributed and subprocess testing")
    distopt = next(filter(lambda opt: opt.dest == "dist", group.options), None)
    distopt._attrs["choices"].append("perdevice")

The issue here is that I require xdist to have already added options before I can modify them. This is confusing me a bit because according to Pytest's documentation, plugin hooks are run on a LIFO basis - I would think since this new plugin is registered last, it would execute first.

In any case, the documentation also says you can influence the calls order using pytest.hookimpl(tryfirst=True). I haven't found this to work at all. Looking at the source code of xdist, the option for tryfirst isn't enabled, so I don't understand why this isn't working. Even adding trylast doesn't work.

Any ideas why this isn't working? I am using pytest-xdist 3.8.0 if that is relevant.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions