Remove deprecated `pytest_cmdline_preparse` hook
This commit is contained in:
parent
f13724e2e3
commit
f4e7b0d6e0
|
@ -1257,7 +1257,7 @@ Deprecations
|
||||||
See :ref:`the deprecation note <diamond-inheritance-deprecated>` for full details.
|
See :ref:`the deprecation note <diamond-inheritance-deprecated>` for full details.
|
||||||
|
|
||||||
|
|
||||||
- `#8592 <https://github.com/pytest-dev/pytest/issues/8592>`_: :hook:`pytest_cmdline_preparse` has been officially deprecated. It will be removed in a future release. Use :hook:`pytest_load_initial_conftests` instead.
|
- `#8592 <https://github.com/pytest-dev/pytest/issues/8592>`_: ``pytest_cmdline_preparse`` has been officially deprecated. It will be removed in a future release. Use :hook:`pytest_load_initial_conftests` instead.
|
||||||
|
|
||||||
See :ref:`the deprecation note <cmdline-preparse-deprecated>` for full details.
|
See :ref:`the deprecation note <cmdline-preparse-deprecated>` for full details.
|
||||||
|
|
||||||
|
|
|
@ -273,8 +273,6 @@ Directly constructing the following classes is now deprecated:
|
||||||
|
|
||||||
These constructors have always been considered private, but now issue a deprecation warning, which may become a hard error in pytest 8.
|
These constructors have always been considered private, but now issue a deprecation warning, which may become a hard error in pytest 8.
|
||||||
|
|
||||||
.. _cmdline-preparse-deprecated:
|
|
||||||
|
|
||||||
Passing ``msg=`` to ``pytest.skip``, ``pytest.fail`` or ``pytest.exit``
|
Passing ``msg=`` to ``pytest.skip``, ``pytest.fail`` or ``pytest.exit``
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -306,29 +304,6 @@ functions and the ``@pytest.mark.skip`` and ``@pytest.mark.xfail`` markers which
|
||||||
# new
|
# new
|
||||||
pytest.exit(reason="bar")
|
pytest.exit(reason="bar")
|
||||||
|
|
||||||
|
|
||||||
Implementing the ``pytest_cmdline_preparse`` hook
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
.. deprecated:: 7.0
|
|
||||||
|
|
||||||
Implementing the :hook:`pytest_cmdline_preparse` hook has been officially deprecated.
|
|
||||||
Implement the :hook:`pytest_load_initial_conftests` hook instead.
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
def pytest_cmdline_preparse(config: Config, args: List[str]) -> None:
|
|
||||||
...
|
|
||||||
|
|
||||||
|
|
||||||
# becomes:
|
|
||||||
|
|
||||||
|
|
||||||
def pytest_load_initial_conftests(
|
|
||||||
early_config: Config, parser: Parser, args: List[str]
|
|
||||||
) -> None:
|
|
||||||
...
|
|
||||||
|
|
||||||
.. _diamond-inheritance-deprecated:
|
.. _diamond-inheritance-deprecated:
|
||||||
|
|
||||||
Diamond inheritance between :class:`pytest.Collector` and :class:`pytest.Item`
|
Diamond inheritance between :class:`pytest.Collector` and :class:`pytest.Item`
|
||||||
|
@ -495,6 +470,32 @@ an appropriate period of deprecation has passed.
|
||||||
Some breaking changes which could not be deprecated are also listed.
|
Some breaking changes which could not be deprecated are also listed.
|
||||||
|
|
||||||
|
|
||||||
|
.. _cmdline-preparse-deprecated:
|
||||||
|
|
||||||
|
Implementing the ``pytest_cmdline_preparse`` hook
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. deprecated:: 7.0
|
||||||
|
.. versionremoved:: 8.0
|
||||||
|
|
||||||
|
Implementing the ``pytest_cmdline_preparse`` hook has been officially deprecated.
|
||||||
|
Implement the :hook:`pytest_load_initial_conftests` hook instead.
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
def pytest_cmdline_preparse(config: Config, args: List[str]) -> None:
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
# becomes:
|
||||||
|
|
||||||
|
|
||||||
|
def pytest_load_initial_conftests(
|
||||||
|
early_config: Config, parser: Parser, args: List[str]
|
||||||
|
) -> None:
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
Collection changes in pytest 8
|
Collection changes in pytest 8
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
|
@ -643,8 +643,6 @@ Bootstrapping hooks called for plugins registered early enough (internal and set
|
||||||
|
|
||||||
.. hook:: pytest_load_initial_conftests
|
.. hook:: pytest_load_initial_conftests
|
||||||
.. autofunction:: pytest_load_initial_conftests
|
.. autofunction:: pytest_load_initial_conftests
|
||||||
.. hook:: pytest_cmdline_preparse
|
|
||||||
.. autofunction:: pytest_cmdline_preparse
|
|
||||||
.. hook:: pytest_cmdline_parse
|
.. hook:: pytest_cmdline_parse
|
||||||
.. autofunction:: pytest_cmdline_parse
|
.. autofunction:: pytest_cmdline_parse
|
||||||
.. hook:: pytest_cmdline_main
|
.. hook:: pytest_cmdline_main
|
||||||
|
|
|
@ -1432,8 +1432,6 @@ class Config:
|
||||||
kwargs=dict(pluginmanager=self.pluginmanager)
|
kwargs=dict(pluginmanager=self.pluginmanager)
|
||||||
)
|
)
|
||||||
self._preparse(args, addopts=addopts)
|
self._preparse(args, addopts=addopts)
|
||||||
# XXX deprecated hook:
|
|
||||||
self.hook.pytest_cmdline_preparse(config=self, args=args)
|
|
||||||
self._parser.after_preparse = True # type: ignore
|
self._parser.after_preparse = True # type: ignore
|
||||||
try:
|
try:
|
||||||
args = self._parser.parse_setoption(
|
args = self._parser.parse_setoption(
|
||||||
|
|
|
@ -46,11 +46,6 @@ YIELD_FIXTURE = PytestDeprecationWarning(
|
||||||
"Use @pytest.fixture instead; they are the same."
|
"Use @pytest.fixture instead; they are the same."
|
||||||
)
|
)
|
||||||
|
|
||||||
WARNING_CMDLINE_PREPARSE_HOOK = PytestRemovedIn8Warning(
|
|
||||||
"The pytest_cmdline_preparse hook is deprecated and will be removed in a future release. \n"
|
|
||||||
"Please use pytest_load_initial_conftests hook instead."
|
|
||||||
)
|
|
||||||
|
|
||||||
STRICT_OPTION = PytestRemovedIn8Warning(
|
STRICT_OPTION = PytestRemovedIn8Warning(
|
||||||
"The --strict option is deprecated, use --strict-markers instead."
|
"The --strict option is deprecated, use --strict-markers instead."
|
||||||
)
|
)
|
||||||
|
|
|
@ -13,8 +13,6 @@ from typing import Union
|
||||||
|
|
||||||
from pluggy import HookspecMarker
|
from pluggy import HookspecMarker
|
||||||
|
|
||||||
from _pytest.deprecated import WARNING_CMDLINE_PREPARSE_HOOK
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
import pdb
|
import pdb
|
||||||
import warnings
|
import warnings
|
||||||
|
@ -159,21 +157,6 @@ def pytest_cmdline_parse(
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
@hookspec(warn_on_impl=WARNING_CMDLINE_PREPARSE_HOOK)
|
|
||||||
def pytest_cmdline_preparse(config: "Config", args: List[str]) -> None:
|
|
||||||
"""(**Deprecated**) modify command line arguments before option parsing.
|
|
||||||
|
|
||||||
This hook is considered deprecated and will be removed in a future pytest version. Consider
|
|
||||||
using :hook:`pytest_load_initial_conftests` instead.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
This hook will not be called for ``conftest.py`` files, only for setuptools plugins.
|
|
||||||
|
|
||||||
:param config: The pytest config object.
|
|
||||||
:param args: Arguments passed on the command line.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
@hookspec(firstresult=True)
|
@hookspec(firstresult=True)
|
||||||
def pytest_cmdline_main(config: "Config") -> Optional[Union["ExitCode", int]]:
|
def pytest_cmdline_main(config: "Config") -> Optional[Union["ExitCode", int]]:
|
||||||
"""Called for performing the main command line action. The default
|
"""Called for performing the main command line action. The default
|
||||||
|
|
|
@ -211,23 +211,6 @@ class TestSkipMsgArgumentDeprecated:
|
||||||
result.assert_outcomes(warnings=1)
|
result.assert_outcomes(warnings=1)
|
||||||
|
|
||||||
|
|
||||||
def test_deprecation_of_cmdline_preparse(pytester: Pytester) -> None:
|
|
||||||
pytester.makeconftest(
|
|
||||||
"""
|
|
||||||
def pytest_cmdline_preparse(config, args):
|
|
||||||
...
|
|
||||||
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
result = pytester.runpytest("-Wdefault::pytest.PytestRemovedIn8Warning")
|
|
||||||
result.stdout.fnmatch_lines(
|
|
||||||
[
|
|
||||||
"*PytestRemovedIn8Warning: The pytest_cmdline_preparse hook is deprecated*",
|
|
||||||
"*Please use pytest_load_initial_conftests hook instead.*",
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_node_ctor_fspath_argument_is_deprecated(pytester: Pytester) -> None:
|
def test_node_ctor_fspath_argument_is_deprecated(pytester: Pytester) -> None:
|
||||||
mod = pytester.getmodulecol("")
|
mod = pytester.getmodulecol("")
|
||||||
|
|
||||||
|
|
|
@ -1253,17 +1253,6 @@ def test_plugin_loading_order(pytester: Pytester) -> None:
|
||||||
assert result.ret == 0
|
assert result.ret == 0
|
||||||
|
|
||||||
|
|
||||||
def test_cmdline_processargs_simple(pytester: Pytester) -> None:
|
|
||||||
pytester.makeconftest(
|
|
||||||
"""
|
|
||||||
def pytest_cmdline_preparse(args):
|
|
||||||
args.append("-h")
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
result = pytester.runpytest("-Wignore::pytest.PytestRemovedIn8Warning")
|
|
||||||
result.stdout.fnmatch_lines(["*pytest*", "*-h*"])
|
|
||||||
|
|
||||||
|
|
||||||
def test_invalid_options_show_extra_information(pytester: Pytester) -> None:
|
def test_invalid_options_show_extra_information(pytester: Pytester) -> None:
|
||||||
"""Display extra information when pytest exits due to unrecognized
|
"""Display extra information when pytest exits due to unrecognized
|
||||||
options in the command-line."""
|
options in the command-line."""
|
||||||
|
|
Loading…
Reference in New Issue