Warn when implementations exist for pytest_namespace hook

This hook has been deprecated and will be removed in the future.

Fix #2639
This commit is contained in:
Bruno Oliveira 2018-07-29 21:30:49 -03:00
parent 0e47599572
commit e3d412d1f4
3 changed files with 17 additions and 3 deletions

View File

@ -0,0 +1,3 @@
``pytest_namespace`` has been deprecated.
Plugins who need this feature are suggested to import ``pytest`` and set attributes explicitly during ``pytest_configure``.

View File

@ -69,7 +69,7 @@ def main():
# if _PYTEST_SETUP_SKIP_PLUGGY_DEP is set, skip installing pluggy; # if _PYTEST_SETUP_SKIP_PLUGGY_DEP is set, skip installing pluggy;
# used by tox.ini to test with pluggy master # used by tox.ini to test with pluggy master
if "_PYTEST_SETUP_SKIP_PLUGGY_DEP" not in os.environ: if "_PYTEST_SETUP_SKIP_PLUGGY_DEP" not in os.environ:
install_requires.append("pluggy>=0.5,<0.8") install_requires.append("pluggy>=0.7")
environment_marker_support_level = get_environment_marker_support_level() environment_marker_support_level = get_environment_marker_support_level()
if environment_marker_support_level >= 2: if environment_marker_support_level >= 2:
install_requires.append('funcsigs;python_version<"3.0"') install_requires.append('funcsigs;python_version<"3.0"')

View File

@ -1,6 +1,7 @@
""" hook specifications for pytest plugins, invoked from main.py and builtin plugins. """ """ hook specifications for pytest plugins, invoked from main.py and builtin plugins. """
from pluggy import HookspecMarker from pluggy import HookspecMarker
from .deprecated import RemovedInPytest4Warning
hookspec = HookspecMarker("pytest") hookspec = HookspecMarker("pytest")
@ -22,10 +23,14 @@ def pytest_addhooks(pluginmanager):
""" """
@hookspec(historic=True) @hookspec(
historic=True,
warn_on_impl=RemovedInPytest4Warning(
"pytest_namespace is deprecated and will be removed soon"
),
)
def pytest_namespace(): def pytest_namespace():
""" """
(**Deprecated**) this hook causes direct monkeypatching on pytest, its use is strongly discouraged
return dict of name->object to be made globally available in return dict of name->object to be made globally available in
the pytest namespace. the pytest namespace.
@ -33,6 +38,12 @@ def pytest_namespace():
.. note:: .. note::
This hook is incompatible with ``hookwrapper=True``. This hook is incompatible with ``hookwrapper=True``.
.. warning::
This hook has been **deprecated** and will be removed in pytest 4.0.
Plugins who need this feature are suggested
to import ``pytest`` and set attributes explicitly during ``pytest_configure``.
""" """