Skip to content

More pytest 7 changelog fixes #9285

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Nov 10, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion changelog/451.doc.rst

This file was deleted.

1 change: 1 addition & 0 deletions changelog/7259.breaking.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ Since `py.path.local` is a `os.PathLike[str]`, these plugins are unaffacted.

Plugins and users which call `reportinfo()`, use the first return value and interact with it as a `py.path.local`, would need to adjust by calling `py.path.local(fspath)`.
Although preferably, avoid the legacy `py.path.local` and use `pathlib.Path`, or use `item.location` or `item.path`, instead.

Note: pytest was not able to provide a deprecation period for this change.
2 changes: 1 addition & 1 deletion changelog/7864.improvement.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Improved error messages when parsing warning filters.

Previously pytest would show an internal traceback, which besides ugly sometimes would hide the cause
Previously pytest would show an internal traceback, which besides being ugly sometimes would hide the cause
of the problem (for example an ``ImportError`` while importing a specific warning type).
2 changes: 1 addition & 1 deletion changelog/8061.bugfix.rst
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Fixed failing staticmethod test cases if they are inherited from a parent test class.
Fixed failing ``staticmethod`` test cases if they are inherited from a parent test class.
2 changes: 1 addition & 1 deletion changelog/8133.trivial.rst
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Migrate to setuptools_scm 6.x to use SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST for more robust release tooling.
Migrate to ``setuptools_scm`` 6.x to use ``SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST`` for more robust release tooling.
1 change: 0 additions & 1 deletion changelog/8251.deprecation.rst

This file was deleted.

4 changes: 2 additions & 2 deletions changelog/8447.deprecation.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Defining a custom pytest node type which is both an :class:`pytest.Item <Item>` and a :class:`pytest.Collector <Collector>` now issues a warning.
Defining a custom pytest node type which is both an :class:`pytest.Item <Item>` and a :class:`pytest.Collector <Collector>` (e.g. :class:`pytest.File <File>`) now issues a warning.
It was never sanely supported and triggers hard to debug errors.

Instead, a separate collector node should be used, which collects the item. See :ref:`non-python tests` for an example.
See :ref:`the deprecation note <diamond-inheritance-deprecated>` for full details.
2 changes: 2 additions & 0 deletions changelog/8592.deprecation.rst
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
:func:`pytest_cmdline_preparse <_pytest.hookspec.pytest_cmdline_preparse>` has been officially deprecated. It will be removed in a future release. Use :func:`pytest_load_initial_conftests <_pytest.hookspec.pytest_load_initial_conftests>` instead.

See :ref:`the deprecation note <cmdline-preparse-deprecated>` for full details.
4 changes: 2 additions & 2 deletions changelog/8803.improvement.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
It is now possible to add colors to custom log levels on cli log.

By using :func:`add_color_level <_pytest.logging.add_color_level` from a ``pytest_configure`` hook, colors can be added::
By using :func:`add_color_level <_pytest.logging.add_color_level>` from a ``pytest_configure`` hook, colors can be added::

logging_plugin = config.pluginmanager.get_plugin('logging-plugin')
logging_plugin.log_cli_handler.formatter.add_color_level(logging.INFO, 'cyan')
logging_plugin.log_cli_handler.formatter.add_color_level(logging.SPAM, 'blue')

See :ref:`log_colors` for more information.
See :ref:`log_colors` for more information.
Empty file removed changelog/8897.doc.rst
Empty file.
2 changes: 0 additions & 2 deletions changelog/8994.improvement.rst

This file was deleted.

File renamed without changes.
2 changes: 1 addition & 1 deletion changelog/9242.doc.rst
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Upgrade readthedocs configuration to use a [newer Ubuntu version](https://blog.readthedocs.com/new-build-specification/) with better unicode support for PDF docs.
Upgrade readthedocs configuration to use a `newer Ubuntu version <https://blog.readthedocs.com/new-build-specification/>`__` with better unicode support for PDF docs.
47 changes: 39 additions & 8 deletions doc/en/deprecations.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,26 @@ In order to support the transition from ``py.path.local`` to :mod:`pathlib`, the

The accompanying ``py.path.local`` based paths have been deprecated: plugins which manually invoke those hooks should only pass the new ``pathlib.Path`` arguments, and users should change their hook implementations to use the new ``pathlib.Path`` arguments.

Directly constructing internal classes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. deprecated:: 7.0

Directly constructing the following classes is now deprecated:

- ``_pytest.mark.structures.Mark``
- ``_pytest.mark.structures.MarkDecorator``
- ``_pytest.mark.structures.MarkGenerator``
- ``_pytest.python.Metafunc``
- ``_pytest.runner.CallInfo``
- ``_pytest._code.ExceptionInfo``
- ``_pytest.config.argparsing.Parser``
- ``_pytest.config.argparsing.OptionGroup``
- ``_pytest.pytester.HookRecorder``

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:

Implementing the ``pytest_cmdline_preparse`` hook
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand All @@ -78,18 +98,19 @@ Implement the :func:`pytest_load_initial_conftests <_pytest.hookspec.pytest_load
) -> None:
...

.. _diamond-inheritance-deprecated:

Diamond inheritance between :class:`pytest.File` and :class:`pytest.Item`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Diamond inheritance between :class:`pytest.Collector` and :class:`pytest.Item`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. deprecated:: 7.0

Inheriting from both Item and file at once has never been supported officially,
however some plugins providing linting/code analysis have been using this as a hack.

This practice is now officially deprecated and a common way to fix this is `example pr fixing inheritance`_.

Defining a custom pytest node type which is both an :class:`pytest.Item <Item>` and a :class:`pytest.Collector <Collector>` (e.g. :class:`pytest.File <File>`) now issues a warning.
It was never sanely supported and triggers hard to debug errors.

Some plugins providing linting/code analysis have been using this as a hack.
Instead, a separate collector node should be used, which collects the item. See
:ref:`non-python tests` for an example, as well as an `example pr fixing inheritance`_.

.. _example pr fixing inheritance: https://github.com/asmeurer/pytest-flakes/pull/40/files

Expand All @@ -100,7 +121,7 @@ Backward compatibilities in ``Parser.addoption``
.. deprecated:: 2.4

Several behaviors of :meth:`Parser.addoption <pytest.Parser.addoption>` are now
scheduled for removal in pytest 7 (deprecated since pytest 2.4.0):
scheduled for removal in pytest 8 (deprecated since pytest 2.4.0):

- ``parser.addoption(..., help=".. %default ..")`` - use ``%(default)s`` instead.
- ``parser.addoption(..., type="int/string/float/complex")`` - use ``type=int`` etc. instead.
Expand All @@ -119,6 +140,16 @@ collection. You are probably not doing that. Ordinary usage of
:class:`unittest.SkipTest` / :meth:`unittest.TestCase.skipTest` /
:func:`unittest.skip` in unittest test cases is fully supported.

Using ``pytest.warns(None)``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. deprecated:: 7.0

:func:`pytest.warns(None) <pytest.warns>` is now deprecated because many people used
it to mean "this code does not emit warnings", but it actually had the effect of
checking that the code emits at least one warning of any type - like ``pytest.warns()``
or ``pytest.warns(Warning)``.


The ``--strict`` command-line option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down