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"
 | 
			
		||||
    "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.config import Config
 | 
			
		||||
from _pytest.config import ExitCode
 | 
			
		||||
from _pytest.deprecated import TERMINALWRITER_WRITER
 | 
			
		||||
from _pytest.main import Session
 | 
			
		||||
from _pytest.reports import CollectReport
 | 
			
		||||
from _pytest.reports import TestReport
 | 
			
		||||
| 
						 | 
				
			
			@ -284,14 +285,14 @@ class TerminalReporter:
 | 
			
		|||
 | 
			
		||||
    @property
 | 
			
		||||
    def writer(self) -> TerminalWriter:
 | 
			
		||||
        warnings.warn(
 | 
			
		||||
            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."
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
        warnings.warn(TERMINALWRITER_WRITER, stacklevel=2)
 | 
			
		||||
        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):
 | 
			
		||||
        """Return True if we should display progress information based on the current config"""
 | 
			
		||||
        # do not show progress if we are not capturing output (#3038)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,8 +36,15 @@ def test_terminal_reporter_writer_attr(pytestconfig):
 | 
			
		|||
    except ImportError:
 | 
			
		||||
        pass
 | 
			
		||||
    terminal_reporter = pytestconfig.pluginmanager.get_plugin("terminalreporter")
 | 
			
		||||
    expected_tw = terminal_reporter._tw
 | 
			
		||||
 | 
			
		||||
    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))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue