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):
|
def read_config_py(filename=None):
|
||||||
"""Read a config.py file."""
|
"""Read a config.py file."""
|
||||||
from qutebrowser.config import config
|
from qutebrowser.config import config
|
||||||
|
api = ConfigAPI(config.instance, config.key_instance)
|
||||||
|
|
||||||
if filename is None:
|
if filename is None:
|
||||||
filename = os.path.join(standarddir.config(), 'config.py')
|
filename = os.path.join(standarddir.config(), 'config.py')
|
||||||
if not os.path.exists(filename):
|
if not os.path.exists(filename):
|
||||||
return None
|
return api
|
||||||
|
|
||||||
api = ConfigAPI(config.instance, config.key_instance)
|
|
||||||
container = config.ConfigContainer(config.instance, configapi=api)
|
container = config.ConfigContainer(config.instance, configapi=api)
|
||||||
|
basename = os.path.basename(filename)
|
||||||
|
|
||||||
module = types.ModuleType('config')
|
module = types.ModuleType('config')
|
||||||
module.config = api
|
module.config = api
|
||||||
module.c = container
|
module.c = container
|
||||||
module.__file__ = filename
|
module.__file__ = filename
|
||||||
|
|
||||||
basename = os.path.basename(filename)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open(filename, mode='rb') as f:
|
with open(filename, mode='rb') as f:
|
||||||
source = f.read()
|
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('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,
|
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'
|
autoconfig_file = config_tmpdir / 'autoconfig.yml'
|
||||||
config_py_file = config_tmpdir / 'config.py'
|
config_py_file = config_tmpdir / 'config.py'
|
||||||
|
|
||||||
autoconfig_file.write_text('global:\n colors.hints.fg: magenta\n',
|
autoconfig_file.write_text('global:\n colors.hints.fg: magenta\n',
|
||||||
'utf-8', ensure=True)
|
'utf-8', ensure=True)
|
||||||
|
|
||||||
|
if config_py:
|
||||||
config_py_lines = ['c.colors.hints.bg = "red"']
|
config_py_lines = ['c.colors.hints.bg = "red"']
|
||||||
if not load_autoconfig:
|
if not load_autoconfig:
|
||||||
config_py_lines.append('config.load_autoconfig = False')
|
config_py_lines.append('config.load_autoconfig = False')
|
||||||
if config_py_errors:
|
if config_py == 'error':
|
||||||
config_py_lines.append('c.foo = 42')
|
config_py_lines.append('c.foo = 42')
|
||||||
|
|
||||||
config_py_file.write_text('\n'.join(config_py_lines), 'utf-8', ensure=True)
|
config_py_file.write_text('\n'.join(config_py_lines), 'utf-8', ensure=True)
|
||||||
|
|
||||||
config.init()
|
config.init()
|
||||||
|
|
||||||
if config_py_errors:
|
if config_py == 'error':
|
||||||
qtbot.add_widget(config._errbox)
|
qtbot.add_widget(config._errbox)
|
||||||
expected = "Errors occurred while reading config.py:"
|
expected = "Errors occurred while reading config.py:"
|
||||||
assert config._errbox.text().strip().startswith(expected)
|
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(
|
fake_save_manager.add_saveable.assert_any_call(
|
||||||
'yaml-config', unittest.mock.ANY)
|
'yaml-config', unittest.mock.ANY)
|
||||||
|
|
||||||
assert config.instance._values['colors.hints.bg'] == 'red'
|
if config_py and load_autoconfig:
|
||||||
if load_autoconfig:
|
assert config.instance._values == {
|
||||||
assert config.instance._values['colors.hints.fg'] == 'magenta'
|
'colors.hints.bg': 'red',
|
||||||
|
'colors.hints.fg': 'magenta',
|
||||||
|
}
|
||||||
|
elif config_py:
|
||||||
|
assert config.instance._values == {'colors.hints.bg': 'red'}
|
||||||
else:
|
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):
|
def test_init_invalid_change_filter(init_patch):
|
||||||
|
Loading…
Reference in New Issue
Block a user