Merge pull request #6986 from RonnyPfannschmidt/fix-6951-tw.writer-writable
fix #6951: allow to write TerminalReporter.writer
This commit is contained in:
commit
ce429381a7
|
@ -0,0 +1 @@
|
||||||
|
Allow users to still set the deprecated ``TerminalReporter.writer`` attribute.
|
|
@ -55,3 +55,9 @@ COLLECT_DIRECTORY_HOOK = PytestDeprecationWarning(
|
||||||
"The pytest_collect_directory hook is not working.\n"
|
"The pytest_collect_directory hook is not working.\n"
|
||||||
"Please use collect_ignore in conftests or pytest_collection_modifyitems."
|
"Please use collect_ignore in conftests or pytest_collection_modifyitems."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
TERMINALWRITER_WRITER = PytestDeprecationWarning(
|
||||||
|
"The TerminalReporter.writer attribute is deprecated, use TerminalReporter._tw instead at your own risk.\n"
|
||||||
|
"See https://docs.pytest.org/en/latest/deprecations.html#terminalreporter-writer for more information."
|
||||||
|
)
|
||||||
|
|
|
@ -29,6 +29,7 @@ from _pytest import nodes
|
||||||
from _pytest._io import TerminalWriter
|
from _pytest._io import TerminalWriter
|
||||||
from _pytest.config import Config
|
from _pytest.config import Config
|
||||||
from _pytest.config import ExitCode
|
from _pytest.config import ExitCode
|
||||||
|
from _pytest.deprecated import TERMINALWRITER_WRITER
|
||||||
from _pytest.main import Session
|
from _pytest.main import Session
|
||||||
from _pytest.reports import CollectReport
|
from _pytest.reports import CollectReport
|
||||||
from _pytest.reports import TestReport
|
from _pytest.reports import TestReport
|
||||||
|
@ -284,14 +285,14 @@ class TerminalReporter:
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def writer(self) -> TerminalWriter:
|
def writer(self) -> TerminalWriter:
|
||||||
warnings.warn(
|
warnings.warn(TERMINALWRITER_WRITER, stacklevel=2)
|
||||||
pytest.PytestDeprecationWarning(
|
|
||||||
"TerminalReporter.writer attribute is deprecated, use TerminalReporter._tw instead at your own risk.\n"
|
|
||||||
"See https://docs.pytest.org/en/latest/deprecations.html#terminalreporter-writer for more information."
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return self._tw
|
return self._tw
|
||||||
|
|
||||||
|
@writer.setter
|
||||||
|
def writer(self, value: TerminalWriter):
|
||||||
|
warnings.warn(TERMINALWRITER_WRITER, stacklevel=2)
|
||||||
|
self._tw = value
|
||||||
|
|
||||||
def _determine_show_progress_info(self):
|
def _determine_show_progress_info(self):
|
||||||
"""Return True if we should display progress information based on the current config"""
|
"""Return True if 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)
|
||||||
|
|
|
@ -36,8 +36,15 @@ def test_terminal_reporter_writer_attr(pytestconfig):
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
terminal_reporter = pytestconfig.pluginmanager.get_plugin("terminalreporter")
|
terminal_reporter = pytestconfig.pluginmanager.get_plugin("terminalreporter")
|
||||||
|
expected_tw = terminal_reporter._tw
|
||||||
|
|
||||||
with pytest.warns(pytest.PytestDeprecationWarning):
|
with pytest.warns(pytest.PytestDeprecationWarning):
|
||||||
assert terminal_reporter.writer is terminal_reporter._tw
|
assert terminal_reporter.writer is expected_tw
|
||||||
|
|
||||||
|
with pytest.warns(pytest.PytestDeprecationWarning):
|
||||||
|
terminal_reporter.writer = expected_tw
|
||||||
|
|
||||||
|
assert terminal_reporter._tw is expected_tw
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("plugin", sorted(deprecated.DEPRECATED_EXTERNAL_PLUGINS))
|
@pytest.mark.parametrize("plugin", sorted(deprecated.DEPRECATED_EXTERNAL_PLUGINS))
|
||||||
|
|
Loading…
Reference in New Issue