diff --git a/qutebrowser/config/configfiles.py b/qutebrowser/config/configfiles.py index 34362a453..15635347f 100644 --- a/qutebrowser/config/configfiles.py +++ b/qutebrowser/config/configfiles.py @@ -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() diff --git a/tests/unit/config/test_config.py b/tests/unit/config/test_config.py index 7b3c302ff..6405cbcbf 100644 --- a/tests/unit/config/test_config.py +++ b/tests/unit/config/test_config.py @@ -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):