diff --git a/_pytest/config.py b/_pytest/config.py index eb9c2a1f25f..86632ed6434 100644 --- a/_pytest/config.py +++ b/_pytest/config.py @@ -177,7 +177,7 @@ class PytestPluginManager(PluginManager): """ def __init__(self): - super(PytestPluginManager, self).__init__("pytest", implprefix="pytest_") + super(PytestPluginManager, self).__init__("pytest") self._conftest_plugins = set() # state related to local conftest plugins @@ -231,6 +231,11 @@ def parse_hookimpl_opts(self, plugin, name): method = getattr(plugin, name) opts = super(PytestPluginManager, self).parse_hookimpl_opts(plugin, name) + + # collect unmarked hooks as long as they have the `pytest_' prefix + if opts is None and name.startswith("pytest_"): + opts = {} + if opts is not None: for name in ("tryfirst", "trylast", "optionalhook", "hookwrapper"): opts.setdefault(name, hasattr(method, name)) diff --git a/changelog/3487.trivial.rst b/changelog/3487.trivial.rst new file mode 100644 index 00000000000..b6dd840f850 --- /dev/null +++ b/changelog/3487.trivial.rst @@ -0,0 +1,3 @@ +Detect `pytest_` prefixed hooks using the internal plugin +manager since ``pluggy`` is deprecating the ``implprefix`` +argument to ``PluginManager``.