Skip to content

Incompatibility between pytest 6.x and pytest-cpp==2.1.2 #82

@greschd

Description

@greschd

The newest release pytest-cpp==2.1.2 seems to be incompatible with the pytest 6.x releases:

Steps to reproduce:

  • Create and activate a new virtualenv
  • pip install 'pytest<7' pytest-cpp==2.1.2
  • In an empty directory, run pytest

Expected behavior:

Pytest runs, without executing any tests.

Observed behavior:

The following exception is raised:

Traceback (most recent call last):
  File "/home/dgresch/venv/bin/pytest", line 8, in <module>
    sys.exit(console_main())
  File "/home/dgresch/venv/lib/python3.8/site-packages/_pytest/config/__init__.py", line 185, in console_main
    code = main()
  File "/home/dgresch/venv/lib/python3.8/site-packages/_pytest/config/__init__.py", line 143, in main
    config = _prepareconfig(args, plugins)
  File "/home/dgresch/venv/lib/python3.8/site-packages/_pytest/config/__init__.py", line 318, in _prepareconfig
    config = pluginmanager.hook.pytest_cmdline_parse(
  File "/home/dgresch/venv/lib/python3.8/site-packages/pluggy/_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "/home/dgresch/venv/lib/python3.8/site-packages/pluggy/_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/home/dgresch/venv/lib/python3.8/site-packages/pluggy/_callers.py", line 55, in _multicall
    gen.send(outcome)
  File "/home/dgresch/venv/lib/python3.8/site-packages/_pytest/helpconfig.py", line 100, in pytest_cmdline_parse
    config: Config = outcome.get_result()
  File "/home/dgresch/venv/lib/python3.8/site-packages/pluggy/_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/home/dgresch/venv/lib/python3.8/site-packages/pluggy/_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "/home/dgresch/venv/lib/python3.8/site-packages/_pytest/config/__init__.py", line 1003, in pytest_cmdline_parse
    self.parse(args)
  File "/home/dgresch/venv/lib/python3.8/site-packages/_pytest/config/__init__.py", line 1283, in parse
    self._preparse(args, addopts=addopts)
  File "/home/dgresch/venv/lib/python3.8/site-packages/_pytest/config/__init__.py", line 1172, in _preparse
    self.pluginmanager.load_setuptools_entrypoints("pytest11")
  File "/home/dgresch/venv/lib/python3.8/site-packages/pluggy/_manager.py", line 288, in load_setuptools_entrypoints
    self.register(plugin, name=ep.name)
  File "/home/dgresch/venv/lib/python3.8/site-packages/_pytest/config/__init__.py", line 436, in register
    ret: Optional[str] = super().register(plugin, name)
  File "/home/dgresch/venv/lib/python3.8/site-packages/pluggy/_manager.py", line 114, in register
    self._verify_hook(hook, hookimpl)
  File "/home/dgresch/venv/lib/python3.8/site-packages/pluggy/_manager.py", line 232, in _verify_hook
    raise PluginValidationError(
pluggy._manager.PluginValidationError: Plugin 'cpp' for hook 'pytest_collect_file'
hookimpl definition: pytest_collect_file(parent, file_path)
Argument(s) {'file_path'} are declared in the hookimpl but can not be found in the hookspec

Additional observations:

The exception can be avoided by either downgrading pytest-cpp to 2.1.1, or upgrading pytest to 7.x.

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