diff --git a/src/_pytest/config/__init__.py b/src/_pytest/config/__init__.py index 175680bd051..d805823882f 100644 --- a/src/_pytest/config/__init__.py +++ b/src/_pytest/config/__init__.py @@ -1235,6 +1235,8 @@ def issue_config_time_warning(self, warning: Warning, stacklevel: int) -> None: :param warning: The warning instance. :param stacklevel: stacklevel forwarded to warnings.warn. """ + if self.pluginmanager.is_blocked("warnings"): + return cmdline_filters = self.known_args_namespace.pythonwarnings or [] config_filters = self.getini("filterwarnings") diff --git a/testing/test_config.py b/testing/test_config.py index 3e8817bc7b4..94ebde522e7 100644 --- a/testing/test_config.py +++ b/testing/test_config.py @@ -275,6 +275,24 @@ def test_silence_unknown_key_warning(self, testdir: Testdir) -> None: result = testdir.runpytest() result.stdout.no_fnmatch_line("*PytestConfigWarning*") + @pytest.mark.filterwarnings("default") + def test_disable_warnings_plugin_disables_config_warnings( + self, testdir: Testdir + ) -> None: + """Disabling 'warnings' plugin also disables config time warnings""" + testdir.makeconftest( + """ + import pytest + def pytest_configure(config): + config.issue_config_time_warning( + pytest.PytestConfigWarning("custom config warning"), + stacklevel=2, + ) + """ + ) + result = testdir.runpytest("-pno:warnings") + result.stdout.no_fnmatch_line("*PytestConfigWarning*") + @pytest.mark.parametrize( "ini_file_text, exception_text", [