summaryrefslogtreecommitdiff
path: root/tests/unit/test_qutebrowser.py
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2020-06-11 13:02:20 +0200
committerFlorian Bruhin <me@the-compiler.org>2020-06-11 16:57:54 +0200
commit58dc10ec66e0dd8c75c7aee18641752914065b17 (patch)
tree001c95ec2dfd3f8dd079db6ca637a4ff560fd4aa /tests/unit/test_qutebrowser.py
parentac4fc1a1e3aa87cc0a26fb7060141c9a059c9599 (diff)
downloadqutebrowser-58dc10ec66e0dd8c75c7aee18641752914065b17.tar.gz
qutebrowser-58dc10ec66e0dd8c75c7aee18641752914065b17.zip
Refactor log.LogFilter
This essentially does two things: 1) Use a set for LogFilter This means we don't support filters like "eggs.bacon" anymore (but we *do* support loggers like that) - however, those were already disallowed by the --logfilter argument validation anyways! In return, we get probably slightly better performance (checking set membership rather than iterating all filters) and more straightforward code. 2) Move parsing from various locations around the code to the LogFilter class.
Diffstat (limited to 'tests/unit/test_qutebrowser.py')
-rw-r--r--tests/unit/test_qutebrowser.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/unit/test_qutebrowser.py b/tests/unit/test_qutebrowser.py
new file mode 100644
index 000000000..6dbc24351
--- /dev/null
+++ b/tests/unit/test_qutebrowser.py
@@ -0,0 +1,63 @@
+# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
+
+# Copyright 2020 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 <http://www.gnu.org/licenses/>.
+
+"""Tests for qutebrowser.qutebrowser.
+
+(Mainly commandline flag parsing)
+"""
+
+import argparse
+
+import pytest
+
+from qutebrowser import qutebrowser
+
+
+@pytest.fixture
+def parser():
+ return qutebrowser.get_argparser()
+
+
+class TestDebugFlag:
+
+ def test_valid(self, parser):
+ args = parser.parse_args(['--debug-flag', 'chromium', '--debug-flag', 'stack'])
+ assert args.debug_flags == ['chromium', 'stack']
+
+ def test_invalid(self, parser, capsys):
+ with pytest.raises(SystemExit):
+ parser.parse_args(['--debug-flag', 'invalid'])
+
+ _out, err = capsys.readouterr()
+ assert 'Invalid debug flag - valid flags:' in err
+
+
+class TestLogFilter:
+
+ def test_valid(self, parser):
+ args = parser.parse_args(['--logfilter', 'misc'])
+ assert args.logfilter == 'misc'
+
+ def test_invalid(self, parser, capsys):
+ with pytest.raises(SystemExit):
+ parser.parse_args(['--logfilter', 'invalid'])
+
+ _out, err = capsys.readouterr()
+ print(err)
+ assert 'Invalid log category invalid - valid categories' in err