Remove deprecated TerminalReporter.writer property

This commit is contained in:
Bruno Oliveira 2020-08-17 17:46:47 -03:00
parent 345a59dd53
commit 457d351941
5 changed files with 10 additions and 57 deletions

View File

@ -8,3 +8,5 @@ removed:
* Direct construction of ``Node`` subclasses now raise an error, use ``from_parent`` instead. * Direct construction of ``Node`` subclasses now raise an error, use ``from_parent`` instead.
* The default value for ``junit_family`` has changed to ``xunit2``. If you require the old format, add ``junit_family=xunit1`` to your configuration file. * The default value for ``junit_family`` has changed to ``xunit2``. If you require the old format, add ``junit_family=xunit1`` to your configuration file.
* The ``TerminalReporter`` no longer has a ``writer`` attribute. Plugin authors may use the public functions of the ``TerminalReporter`` instead of accessing the ``TerminalWriter`` object directly.

View File

@ -82,10 +82,17 @@ The plan is remove the ``--result-log`` option in pytest 6.0 if ``pytest-reportl
to all users and is deemed stable. The ``pytest-reportlog`` plugin might even be merged into the core to all users and is deemed stable. The ``pytest-reportlog`` plugin might even be merged into the core
at some point, depending on the plans for the plugins and number of users using it. at some point, depending on the plans for the plugins and number of users using it.
Removed Features
----------------
As stated in our :ref:`backwards-compatibility` policy, deprecated features are removed only in major releases after
an appropriate period of deprecation has passed.
TerminalReporter.writer TerminalReporter.writer
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
.. deprecated:: 5.4 .. versionremoved:: 6.0
The ``TerminalReporter.writer`` attribute has been deprecated and should no longer be used. This The ``TerminalReporter.writer`` attribute has been deprecated and should no longer be used. This
was inadvertently exposed as part of the public API of that plugin and ties it too much was inadvertently exposed as part of the public API of that plugin and ties it too much
@ -94,13 +101,6 @@ with ``py.io.TerminalWriter``.
Plugins that used ``TerminalReporter.writer`` directly should instead use ``TerminalReporter`` Plugins that used ``TerminalReporter.writer`` directly should instead use ``TerminalReporter``
methods that provide the same functionality. methods that provide the same functionality.
Removed Features
----------------
As stated in our :ref:`backwards-compatibility` policy, deprecated features are removed only in major releases after
an appropriate period of deprecation has passed.
``junit_family`` default value change to "xunit2" ``junit_family`` default value change to "xunit2"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -42,12 +42,6 @@ PYTEST_COLLECT_MODULE = UnformattedWarning(
) )
TERMINALWRITER_WRITER = PytestDeprecationWarning(
"The TerminalReporter.writer attribute is deprecated, use TerminalReporter._tw instead at your own risk.\n"
"See https://docs.pytest.org/en/stable/deprecations.html#terminalreporter-writer for more information."
)
MINUS_K_DASH = PytestDeprecationWarning( MINUS_K_DASH = PytestDeprecationWarning(
"The `-k '-expr'` syntax to -k is deprecated.\nUse `-k 'not expr'` instead." "The `-k '-expr'` syntax to -k is deprecated.\nUse `-k 'not expr'` instead."
) )

View File

@ -31,7 +31,6 @@ from _pytest import nodes
from _pytest import timing from _pytest import timing
from _pytest._code import ExceptionInfo from _pytest._code import ExceptionInfo
from _pytest._code.code import ExceptionRepr from _pytest._code.code import ExceptionRepr
from _pytest._io import TerminalWriter
from _pytest._io.wcwidth import wcswidth from _pytest._io.wcwidth import wcswidth
from _pytest.compat import order_preserving_dict from _pytest.compat import order_preserving_dict
from _pytest.compat import TYPE_CHECKING from _pytest.compat import TYPE_CHECKING
@ -39,7 +38,6 @@ from _pytest.config import _PluggyPlugin
from _pytest.config import Config from _pytest.config import Config
from _pytest.config import ExitCode from _pytest.config import ExitCode
from _pytest.config.argparsing import Parser from _pytest.config.argparsing import Parser
from _pytest.deprecated import TERMINALWRITER_WRITER
from _pytest.nodes import Item from _pytest.nodes import Item
from _pytest.nodes import Node from _pytest.nodes import Node
from _pytest.reports import BaseReport from _pytest.reports import BaseReport
@ -335,16 +333,6 @@ class TerminalReporter:
self._already_displayed_warnings = None # type: Optional[int] self._already_displayed_warnings = None # type: Optional[int]
self._keyboardinterrupt_memo = None # type: Optional[ExceptionRepr] self._keyboardinterrupt_memo = None # type: Optional[ExceptionRepr]
@property
def writer(self) -> TerminalWriter:
warnings.warn(TERMINALWRITER_WRITER, stacklevel=2)
return self._tw
@writer.setter
def writer(self, value: TerminalWriter) -> None:
warnings.warn(TERMINALWRITER_WRITER, stacklevel=2)
self._tw = value
def _determine_show_progress_info(self) -> "Literal['progress', 'count', False]": def _determine_show_progress_info(self) -> "Literal['progress', 'count', False]":
"""Return whether we should display progress information based on the current config.""" """Return whether we should display progress information based on the current config."""
# do not show progress if we are not capturing output (#3038) # do not show progress if we are not capturing output (#3038)

View File

@ -1,10 +1,8 @@
import copy
import warnings import warnings
from unittest import mock from unittest import mock
import pytest import pytest
from _pytest import deprecated from _pytest import deprecated
from _pytest.config import Config
from _pytest.pytester import Testdir from _pytest.pytester import Testdir
@ -36,35 +34,6 @@ def test_pytest_collect_module_deprecated(attribute):
getattr(pytest.collect, attribute) getattr(pytest.collect, attribute)
def test_terminal_reporter_writer_attr(pytestconfig: Config) -> None:
"""Check that TerminalReporter._tw is also available as 'writer' (#2984)
This attribute has been deprecated in 5.4.
"""
try:
import xdist # noqa
pytest.skip("xdist workers disable the terminal reporter plugin")
except ImportError:
pass
terminal_reporter = pytestconfig.pluginmanager.get_plugin("terminalreporter")
original_tw = terminal_reporter._tw
with pytest.warns(pytest.PytestDeprecationWarning) as cw:
assert terminal_reporter.writer is original_tw
assert len(cw) == 1
assert cw[0].filename == __file__
new_tw = copy.copy(original_tw)
with pytest.warns(pytest.PytestDeprecationWarning) as cw:
terminal_reporter.writer = new_tw
try:
assert terminal_reporter._tw is new_tw
finally:
terminal_reporter.writer = original_tw
assert len(cw) == 2
assert cw[0].filename == cw[1].filename == __file__
@pytest.mark.parametrize("plugin", sorted(deprecated.DEPRECATED_EXTERNAL_PLUGINS)) @pytest.mark.parametrize("plugin", sorted(deprecated.DEPRECATED_EXTERNAL_PLUGINS))
@pytest.mark.filterwarnings("default") @pytest.mark.filterwarnings("default")
def test_external_plugins_integrated(testdir, plugin): def test_external_plugins_integrated(testdir, plugin):