summaryrefslogtreecommitdiff
path: root/tests/unit/utils/test_qtlog.py
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-07-21 14:52:24 +0200
committerGitHub <noreply@github.com>2023-07-21 14:52:24 +0200
commit1387b0598b90501dfa1dc8e4cbe5e1d0d05cd048 (patch)
treec10b53a21a316dee9d2b42af3ea737df29df2339 /tests/unit/utils/test_qtlog.py
parent059a280e4ec11898148df78578b7a29cc2bd41d3 (diff)
parent01ab247a410488f86ac57cf07e22cca5e62bc92c (diff)
downloadqutebrowser-1387b0598b90501dfa1dc8e4cbe5e1d0d05cd048.tar.gz
qutebrowser-1387b0598b90501dfa1dc8e4cbe5e1d0d05cd048.zip
Merge pull request #7772 from pylbrecht/logfilter
Don't crash on --logfilter at startup
Diffstat (limited to 'tests/unit/utils/test_qtlog.py')
-rw-r--r--tests/unit/utils/test_qtlog.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/unit/utils/test_qtlog.py b/tests/unit/utils/test_qtlog.py
new file mode 100644
index 000000000..3dd62b9a9
--- /dev/null
+++ b/tests/unit/utils/test_qtlog.py
@@ -0,0 +1,82 @@
+# Copyright 2014-2021 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
+#
+# This file is part of qutebrowser.
+#
+# qutebrowser is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# qutebrowser is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with qutebrowser. If not, see <https://www.gnu.org/licenses/>.
+
+
+"""Tests for qutebrowser.utils.qtlog."""
+
+import dataclasses
+import logging
+
+import pytest
+
+from qutebrowser import qutebrowser
+from qutebrowser.utils import qtlog
+
+from qutebrowser.qt import core as qtcore
+
+
+class TestQtMessageHandler:
+
+ @dataclasses.dataclass
+ class Context:
+
+ """Fake QMessageLogContext."""
+
+ function: str = None
+ category: str = None
+ file: str = None
+ line: int = None
+
+ @pytest.fixture(autouse=True)
+ def init_args(self):
+ parser = qutebrowser.get_argparser()
+ args = parser.parse_args([])
+ qtlog.init(args)
+
+ def test_empty_message(self, caplog):
+ """Make sure there's no crash with an empty message."""
+ qtlog.qt_message_handler(qtcore.QtMsgType.QtDebugMsg, self.Context(), "")
+ assert caplog.messages == ["Logged empty message!"]
+
+
+class TestHideQtWarning:
+
+ """Tests for hide_qt_warning/QtWarningFilter."""
+
+ @pytest.fixture
+ def qt_logger(self):
+ return logging.getLogger('qt-tests')
+
+ def test_unfiltered(self, qt_logger, caplog):
+ with qtlog.hide_qt_warning("World", 'qt-tests'):
+ with caplog.at_level(logging.WARNING, 'qt-tests'):
+ qt_logger.warning("Hello World")
+ assert len(caplog.records) == 1
+ record = caplog.records[0]
+ assert record.levelname == 'WARNING'
+ assert record.message == "Hello World"
+
+ @pytest.mark.parametrize('line', [
+ "Hello", # exact match
+ "Hello World", # match at start of line
+ " Hello World ", # match with spaces
+ ])
+ def test_filtered(self, qt_logger, caplog, line):
+ with qtlog.hide_qt_warning("Hello", 'qt-tests'):
+ with caplog.at_level(logging.WARNING, 'qt-tests'):
+ qt_logger.warning(line)
+ assert not caplog.records