diff --git a/testing/deprecated_test.py b/testing/deprecated_test.py index 93601d0a9..fc89c7751 100644 --- a/testing/deprecated_test.py +++ b/testing/deprecated_test.py @@ -1,8 +1,10 @@ +import copy import inspect import pytest from _pytest import deprecated from _pytest import nodes +from _pytest.config import Config @pytest.mark.filterwarnings("default") @@ -32,7 +34,7 @@ def test_pytest_collect_module_deprecated(attribute): getattr(pytest.collect, attribute) -def test_terminal_reporter_writer_attr(pytestconfig): +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. """ @@ -43,15 +45,22 @@ def test_terminal_reporter_writer_attr(pytestconfig): except ImportError: pass terminal_reporter = pytestconfig.pluginmanager.get_plugin("terminalreporter") - expected_tw = terminal_reporter._tw + original_tw = terminal_reporter._tw - with pytest.warns(pytest.PytestDeprecationWarning): - assert terminal_reporter.writer is expected_tw + with pytest.warns(pytest.PytestDeprecationWarning) as cw: + assert terminal_reporter.writer is original_tw + assert len(cw) == 1 + assert cw[0].filename == __file__ - with pytest.warns(pytest.PytestDeprecationWarning): - terminal_reporter.writer = expected_tw - - assert terminal_reporter._tw is expected_tw + 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))