Fix configinit tests
This commit is contained in:
parent
865fc2e0de
commit
3be0a78819
@ -18,6 +18,7 @@
|
||||
|
||||
"""Tests for qutebrowser.config.configinit."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import logging
|
||||
import unittest.mock
|
||||
@ -33,7 +34,6 @@ from qutebrowser.utils import objreg, usertypes
|
||||
@pytest.fixture
|
||||
def init_patch(qapp, fake_save_manager, monkeypatch, config_tmpdir,
|
||||
data_tmpdir):
|
||||
monkeypatch.setattr(configdata, 'DATA', None)
|
||||
monkeypatch.setattr(configfiles, 'state', None)
|
||||
monkeypatch.setattr(config, 'instance', None)
|
||||
monkeypatch.setattr(config, 'key_instance', None)
|
||||
@ -46,10 +46,17 @@ def init_patch(qapp, fake_save_manager, monkeypatch, config_tmpdir,
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def args(fake_args):
|
||||
"""Arguments needed for the config to init."""
|
||||
fake_args.temp_settings = []
|
||||
return fake_args
|
||||
|
||||
|
||||
class TestEarlyInit:
|
||||
|
||||
@pytest.mark.parametrize('config_py', [True, 'error', False])
|
||||
def test_config_py(self, init_patch, config_tmpdir, caplog, fake_args,
|
||||
def test_config_py(self, init_patch, config_tmpdir, caplog, args,
|
||||
config_py):
|
||||
"""Test loading with only a config.py."""
|
||||
config_py_file = config_tmpdir / 'config.py'
|
||||
@ -62,7 +69,7 @@ class TestEarlyInit:
|
||||
'utf-8', ensure=True)
|
||||
|
||||
with caplog.at_level(logging.ERROR):
|
||||
configinit.early_init(fake_args)
|
||||
configinit.early_init(args)
|
||||
|
||||
# Check error messages
|
||||
expected_errors = []
|
||||
@ -92,7 +99,7 @@ class TestEarlyInit:
|
||||
@pytest.mark.parametrize('config_py', [True, 'error', False])
|
||||
@pytest.mark.parametrize('invalid_yaml', ['42', 'unknown', 'wrong-type',
|
||||
False])
|
||||
def test_autoconfig_yml(self, init_patch, config_tmpdir, caplog, fake_args,
|
||||
def test_autoconfig_yml(self, init_patch, config_tmpdir, caplog, args,
|
||||
load_autoconfig, config_py, invalid_yaml):
|
||||
"""Test interaction between config.py and autoconfig.yml."""
|
||||
# pylint: disable=too-many-locals,too-many-branches
|
||||
@ -119,7 +126,7 @@ class TestEarlyInit:
|
||||
'utf-8', ensure=True)
|
||||
|
||||
with caplog.at_level(logging.ERROR):
|
||||
configinit.early_init(fake_args)
|
||||
configinit.early_init(args)
|
||||
|
||||
# Check error messages
|
||||
expected_errors = []
|
||||
@ -158,16 +165,46 @@ class TestEarlyInit:
|
||||
else:
|
||||
assert config.instance._values == {'colors.hints.fg': 'magenta'}
|
||||
|
||||
def test_invalid_change_filter(self, init_patch, fake_args):
|
||||
def test_invalid_change_filter(self, init_patch, args):
|
||||
config.change_filter('foobar')
|
||||
with pytest.raises(configexc.NoOptionError):
|
||||
configinit.early_init(fake_args)
|
||||
configinit.early_init(args)
|
||||
|
||||
def test_temp_settings_valid(self, init_patch, args):
|
||||
args.temp_settings = [('colors.completion.fg', 'magenta')]
|
||||
configinit.early_init(args)
|
||||
assert config.instance._values['colors.completion.fg'] == 'magenta'
|
||||
|
||||
def test_temp_settings_invalid(self, caplog, init_patch, message_mock,
|
||||
args):
|
||||
"""Invalid temp settings should show an error."""
|
||||
args.temp_settings = [('foo', 'bar')]
|
||||
|
||||
with caplog.at_level(logging.ERROR):
|
||||
configinit.early_init(args)
|
||||
|
||||
msg = message_mock.getmsg()
|
||||
assert msg.level == usertypes.MessageLevel.error
|
||||
assert msg.text == "set: NoOptionError - No option 'foo'"
|
||||
assert 'colors.completion.fg' not in config.instance._values
|
||||
|
||||
def test_force_software_rendering(self, monkeypatch, init_patch, args):
|
||||
"""Setting force_software_rendering should set the environment var."""
|
||||
envvar = 'QT_XCB_FORCE_SOFTWARE_OPENGL'
|
||||
monkeypatch.setattr(configinit.objects, 'backend',
|
||||
usertypes.Backend.QtWebEngine)
|
||||
monkeypatch.delenv(envvar, raising=False)
|
||||
args.temp_settings = [('force_software_rendering', 'true')]
|
||||
|
||||
configinit.early_init(args)
|
||||
|
||||
assert os.environ[envvar] == '1'
|
||||
|
||||
|
||||
@pytest.mark.parametrize('errors', [True, False])
|
||||
def test_late_init(init_patch, monkeypatch, fake_save_manager, fake_args,
|
||||
def test_late_init(init_patch, monkeypatch, fake_save_manager, args,
|
||||
mocker, errors):
|
||||
configinit.early_init(fake_args)
|
||||
configinit.early_init(args)
|
||||
if errors:
|
||||
err = configexc.ConfigErrorDesc("Error text", Exception("Exception"))
|
||||
errs = configexc.ConfigFileErrors("config.py", [err])
|
||||
@ -245,7 +282,7 @@ class TestQtArgs:
|
||||
# set in config
|
||||
(None, 'webkit', usertypes.Backend.QtWebKit),
|
||||
])
|
||||
def test_get_backend(monkeypatch, fake_args, config_stub,
|
||||
def test_get_backend(monkeypatch, args, config_stub,
|
||||
arg, confval, used):
|
||||
real_import = __import__
|
||||
|
||||
@ -254,8 +291,8 @@ def test_get_backend(monkeypatch, fake_args, config_stub,
|
||||
return real_import(name, *args, **kwargs)
|
||||
raise ImportError
|
||||
|
||||
fake_args.backend = arg
|
||||
args.backend = arg
|
||||
config_stub.val.backend = confval
|
||||
monkeypatch.setattr('builtins.__import__', fake_import)
|
||||
|
||||
assert configinit.get_backend(fake_args) == used
|
||||
assert configinit.get_backend(args) == used
|
||||
|
Loading…
Reference in New Issue
Block a user