summaryrefslogtreecommitdiff
path: root/tests/unit/config/test_configfiles.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/config/test_configfiles.py')
-rw-r--r--tests/unit/config/test_configfiles.py213
1 files changed, 152 insertions, 61 deletions
diff --git a/tests/unit/config/test_configfiles.py b/tests/unit/config/test_configfiles.py
index e0ebbabdf..394214a8b 100644
--- a/tests/unit/config/test_configfiles.py
+++ b/tests/unit/config/test_configfiles.py
@@ -25,7 +25,7 @@ import textwrap
import logging
import pytest
-from PyQt5.QtCore import QSettings
+from qutebrowser.qt.core import QSettings
from qutebrowser.config import (config, configfiles, configexc, configdata,
configtypes)
@@ -77,54 +77,74 @@ def autoconfig(config_tmpdir):
@pytest.mark.parametrize('old_data, insert, new_data', [
- (None,
- False,
- '[general]\n'
- 'qt_version = 5.6.7\n'
- 'qtwe_version = 7.8.9\n'
- 'version = 1.2.3\n'
- '\n'
- '[geometry]\n'
- '\n'
- '[inspector]\n'
- '\n'),
- ('[general]\n'
- 'fooled = true',
- False,
- '[general]\n'
- 'qt_version = 5.6.7\n'
- 'qtwe_version = 7.8.9\n'
- 'version = 1.2.3\n'
- '\n'
- '[geometry]\n'
- '\n'
- '[inspector]\n'
- '\n'),
- ('[general]\n'
- 'foobar = 42',
- False,
- '[general]\n'
- 'foobar = 42\n'
- 'qt_version = 5.6.7\n'
- 'qtwe_version = 7.8.9\n'
- 'version = 1.2.3\n'
- '\n'
- '[geometry]\n'
- '\n'
- '[inspector]\n'
- '\n'),
- (None,
- True,
- '[general]\n'
- 'qt_version = 5.6.7\n'
- 'qtwe_version = 7.8.9\n'
- 'version = 1.2.3\n'
- 'newval = 23\n'
- '\n'
- '[geometry]\n'
- '\n'
- '[inspector]\n'
- '\n'),
+ (
+ None,
+
+ False,
+
+ '[general]\n'
+ 'qt_version = 5.6.7\n'
+ 'qtwe_version = 7.8.9\n'
+ 'chromium_version = 123\n'
+ 'version = 1.2.3\n'
+ '\n'
+ '[geometry]\n'
+ '\n'
+ '[inspector]\n'
+ '\n',
+ ),
+ (
+ '[general]\n'
+ 'fooled = true',
+
+ False,
+
+ '[general]\n'
+ 'qt_version = 5.6.7\n'
+ 'qtwe_version = 7.8.9\n'
+ 'chromium_version = 123\n'
+ 'version = 1.2.3\n'
+ '\n'
+ '[geometry]\n'
+ '\n'
+ '[inspector]\n'
+ '\n'
+ ),
+ (
+ '[general]\n'
+ 'foobar = 42',
+
+ False,
+
+ '[general]\n'
+ 'foobar = 42\n'
+ 'qt_version = 5.6.7\n'
+ 'qtwe_version = 7.8.9\n'
+ 'chromium_version = 123\n'
+ 'version = 1.2.3\n'
+ '\n'
+ '[geometry]\n'
+ '\n'
+ '[inspector]\n'
+ '\n'
+ ),
+ (
+ None,
+
+ True,
+
+ '[general]\n'
+ 'qt_version = 5.6.7\n'
+ 'qtwe_version = 7.8.9\n'
+ 'chromium_version = 123\n'
+ 'version = 1.2.3\n'
+ 'newval = 23\n'
+ '\n'
+ '[geometry]\n'
+ '\n'
+ '[inspector]\n'
+ '\n'
+ ),
])
def test_state_config(
fake_save_manager, data_tmpdir, monkeypatch, qtwe_version_patcher,
@@ -132,7 +152,7 @@ def test_state_config(
):
monkeypatch.setattr(configfiles.qutebrowser, '__version__', '1.2.3')
monkeypatch.setattr(configfiles, 'qVersion', lambda: '5.6.7')
- qtwe_version_patcher('7.8.9')
+ qtwe_version_patcher('7.8.9', chromium_version='123.4.5.6')
statefile = data_tmpdir / 'state'
if old_data is not None:
@@ -167,18 +187,18 @@ def state_writer(data_tmpdir):
@pytest.fixture
def qtwe_version_patcher(monkeypatch):
try:
- from PyQt5 import QtWebEngineWidgets # pylint: disable=unused-import
+ from qutebrowser.qt import webenginecore # pylint: disable=unused-import
except ImportError:
pytest.skip("QtWebEngine not available")
- def patch(ver):
+ def patch(ver, chromium_version=None):
monkeypatch.setattr(
configfiles.version,
'qtwebengine_versions',
lambda avoid_init=False:
version.WebEngineVersions(
webengine=utils.VersionNumber.parse(ver),
- chromium=None,
+ chromium=chromium_version,
source='test',
)
)
@@ -222,13 +242,21 @@ def test_qtwe_version_changed(state_writer, qtwe_version_patcher,
assert state.qtwe_version_changed == changed
-def test_qtwe_version_changed_webkit(stubs, monkeypatch, state_writer):
- fake = stubs.ImportFake({'PyQt5.QtWebEngineWidgets': False}, monkeypatch)
+@pytest.mark.parametrize("key, attribute, expected", [
+ ("qtwe_version", "qtwe_version_changed", False),
+ ("chromium_version", "chromium_version_changed", configfiles.VersionChange.unknown),
+])
+@pytest.mark.parametrize("value", ["no", None])
+def test_version_changed_webkit(stubs, monkeypatch, state_writer,
+ key, value, attribute, expected):
+ fake = stubs.ImportFake({'qutebrowser.qt.webenginewidgets': False}, monkeypatch)
fake.patch()
- state_writer('qtwe_version', 'no')
+ if value is not None:
+ state_writer(key, value)
+
state = configfiles.StateConfig()
- assert not state.qtwe_version_changed
+ assert getattr(state, attribute) == expected
@pytest.mark.parametrize('old_version, new_version, expected', [
@@ -260,14 +288,77 @@ def test_qutebrowser_version_changed(
assert state.qutebrowser_version_changed == expected
-def test_qutebrowser_version_unparsable(state_writer, monkeypatch, caplog):
- state_writer('version', 'blabla')
+@pytest.mark.parametrize('old_version, new_version, expected', [
+ (None, '90', configfiles.VersionChange.unknown),
+ ('90', '90', configfiles.VersionChange.equal),
+
+ ('90', '94', configfiles.VersionChange.minor),
+ ('83', '87', configfiles.VersionChange.minor),
+
+ ('83', '90', configfiles.VersionChange.major),
+ ('87', '90', configfiles.VersionChange.major),
+ ('83', '94', configfiles.VersionChange.major),
+ ('87', '94', configfiles.VersionChange.major),
+
+ ('94', '90', configfiles.VersionChange.downgrade),
+ ('94', '87', configfiles.VersionChange.downgrade),
+ ('90', '83', configfiles.VersionChange.downgrade),
+])
+def test_chromium_version_changed(
+ state_writer, qtwe_version_patcher,
+ old_version, new_version, expected):
+ qtwe_version_patcher('6.2', chromium_version=new_version)
+
+ if old_version is not None:
+ state_writer('chromium_version', old_version)
+
+ state = configfiles.StateConfig()
+ assert state.chromium_version_changed == expected
+
+
+@pytest.mark.parametrize('old_qtwe_version, new_chromium_version, expected', [
+ (None, '90', configfiles.VersionChange.unknown),
+ ('6.2.0', '90', configfiles.VersionChange.equal),
+ ('6.2.1', '94', configfiles.VersionChange.minor),
+ ('5.15.2', '90', configfiles.VersionChange.major),
+ ('6.3.0', '90', configfiles.VersionChange.downgrade),
+
+])
+def test_chromium_version_changed_inferring(
+ state_writer, qtwe_version_patcher,
+ old_qtwe_version, new_chromium_version, expected):
+ qtwe_version_patcher('6.2', chromium_version=new_chromium_version)
+
+ if old_qtwe_version is not None:
+ state_writer('qtwe_version', old_qtwe_version)
+
+ state = configfiles.StateConfig()
+ assert state.chromium_version_changed == expected
+
+
+@pytest.mark.parametrize("key, msg, attribute", [
+ ("version", "old version", "qutebrowser_version_changed"),
+ pytest.param(
+ "qtwe_version",
+ "old QtWebEngine version",
+ "chromium_version_changed",
+ marks=pytest.mark.qtwebkit_skip,
+ ),
+ pytest.param(
+ "chromium_version",
+ "old Chromium version",
+ "chromium_version_changed",
+ marks=pytest.mark.qtwebkit_skip,
+ ),
+])
+def test_version_unparsable(state_writer, caplog, key, msg, attribute):
+ state_writer(key, 'blabla')
with caplog.at_level(logging.WARNING):
state = configfiles.StateConfig()
- assert caplog.messages == ['Unable to parse old version blabla']
- assert state.qutebrowser_version_changed == configfiles.VersionChange.unknown
+ assert caplog.messages == [f'Unable to parse {msg} blabla']
+ assert getattr(state, attribute) == configfiles.VersionChange.unknown
@pytest.mark.parametrize('value, filterstr, matches', [