Fix initializing without a config.py
This commit is contained in:
parent
7c39600508
commit
e0621c6eda
@ -149,22 +149,21 @@ class ConfigAPI:
|
||||
def read_config_py(filename=None):
|
||||
"""Read a config.py file."""
|
||||
from qutebrowser.config import config
|
||||
api = ConfigAPI(config.instance, config.key_instance)
|
||||
|
||||
if filename is None:
|
||||
filename = os.path.join(standarddir.config(), 'config.py')
|
||||
if not os.path.exists(filename):
|
||||
return None
|
||||
return api
|
||||
|
||||
api = ConfigAPI(config.instance, config.key_instance)
|
||||
container = config.ConfigContainer(config.instance, configapi=api)
|
||||
basename = os.path.basename(filename)
|
||||
|
||||
module = types.ModuleType('config')
|
||||
module.config = api
|
||||
module.c = container
|
||||
module.__file__ = filename
|
||||
|
||||
basename = os.path.basename(filename)
|
||||
|
||||
try:
|
||||
with open(filename, mode='rb') as f:
|
||||
source = f.read()
|
||||
|
@ -877,25 +877,26 @@ def init_patch(qapp, fake_save_manager, monkeypatch, config_tmpdir,
|
||||
|
||||
|
||||
@pytest.mark.parametrize('load_autoconfig', [True, False])
|
||||
@pytest.mark.parametrize('config_py_errors', [True, False])
|
||||
@pytest.mark.parametrize('config_py', [True, 'error', False])
|
||||
def test_init(qtbot, init_patch, fake_save_manager, config_tmpdir,
|
||||
load_autoconfig, config_py_errors):
|
||||
load_autoconfig, config_py):
|
||||
autoconfig_file = config_tmpdir / 'autoconfig.yml'
|
||||
config_py_file = config_tmpdir / 'config.py'
|
||||
|
||||
autoconfig_file.write_text('global:\n colors.hints.fg: magenta\n',
|
||||
'utf-8', ensure=True)
|
||||
config_py_lines = ['c.colors.hints.bg = "red"']
|
||||
if not load_autoconfig:
|
||||
config_py_lines.append('config.load_autoconfig = False')
|
||||
if config_py_errors:
|
||||
config_py_lines.append('c.foo = 42')
|
||||
|
||||
config_py_file.write_text('\n'.join(config_py_lines), 'utf-8', ensure=True)
|
||||
if config_py:
|
||||
config_py_lines = ['c.colors.hints.bg = "red"']
|
||||
if not load_autoconfig:
|
||||
config_py_lines.append('config.load_autoconfig = False')
|
||||
if config_py == 'error':
|
||||
config_py_lines.append('c.foo = 42')
|
||||
config_py_file.write_text('\n'.join(config_py_lines), 'utf-8', ensure=True)
|
||||
|
||||
config.init()
|
||||
|
||||
if config_py_errors:
|
||||
if config_py == 'error':
|
||||
qtbot.add_widget(config._errbox)
|
||||
expected = "Errors occurred while reading config.py:"
|
||||
assert config._errbox.text().strip().startswith(expected)
|
||||
@ -912,11 +913,15 @@ def test_init(qtbot, init_patch, fake_save_manager, config_tmpdir,
|
||||
fake_save_manager.add_saveable.assert_any_call(
|
||||
'yaml-config', unittest.mock.ANY)
|
||||
|
||||
assert config.instance._values['colors.hints.bg'] == 'red'
|
||||
if load_autoconfig:
|
||||
assert config.instance._values['colors.hints.fg'] == 'magenta'
|
||||
if config_py and load_autoconfig:
|
||||
assert config.instance._values == {
|
||||
'colors.hints.bg': 'red',
|
||||
'colors.hints.fg': 'magenta',
|
||||
}
|
||||
elif config_py:
|
||||
assert config.instance._values == {'colors.hints.bg': 'red'}
|
||||
else:
|
||||
assert 'colors.hints.fg' not in config.instance._values
|
||||
assert config.instance._values == {'colors.hints.fg': 'magenta'}
|
||||
|
||||
|
||||
def test_init_invalid_change_filter(init_patch):
|
||||
|
Loading…
Reference in New Issue
Block a user