diff --git a/qutebrowser/config/configfiles.py b/qutebrowser/config/configfiles.py index aab210bf1..7be756b2d 100644 --- a/qutebrowser/config/configfiles.py +++ b/qutebrowser/config/configfiles.py @@ -348,6 +348,9 @@ def read_config_py(filename, raising=False): raising: Raise exceptions happening in config.py. This is needed during tests to use pytest's inspection. """ + assert config.instance is not None + assert config.key_instance is not None + api = ConfigAPI(config.instance, config.key_instance) container = config.ConfigContainer(config.instance, configapi=api) basename = os.path.basename(filename) diff --git a/tests/unit/config/test_configfiles.py b/tests/unit/config/test_configfiles.py index cef035a1f..6339784e9 100644 --- a/tests/unit/config/test_configfiles.py +++ b/tests/unit/config/test_configfiles.py @@ -273,14 +273,15 @@ class ConfPy: 'qbmodule.run(config)') +@pytest.fixture +def confpy(tmpdir, config_tmpdir, data_tmpdir, config_stub, key_config_stub): + return ConfPy(tmpdir) + + class TestConfigPyModules: pytestmark = pytest.mark.usefixtures('config_stub', 'key_config_stub') - @pytest.fixture - def confpy(self, tmpdir, config_tmpdir, data_tmpdir): - return ConfPy(tmpdir) - @pytest.fixture def qbmodulepy(self, tmpdir): return ConfPy(tmpdir, filename="qbmodule.py") @@ -342,10 +343,6 @@ class TestConfigPy: pytestmark = pytest.mark.usefixtures('config_stub', 'key_config_stub') - @pytest.fixture - def confpy(self, tmpdir, config_tmpdir, data_tmpdir): - return ConfPy(tmpdir) - def test_assertions(self, confpy): """Make sure assertions in config.py work for these tests.""" confpy.write('assert False') @@ -660,6 +657,21 @@ class TestConfigPyWriter: lines = pyfile.read_text('utf-8').splitlines() assert '# Autogenerated config.py' in lines + def test_defaults_work(self, confpy): + """Get a config.py with default values and run it.""" + options = [(opt, opt.default) + for _name, opt in sorted(configdata.DATA.items())] + bindings = dict(configdata.DATA['bindings.default'].default) + writer = configfiles.ConfigPyWriter(options, bindings, commented=False) + writer.write(confpy.filename) + + try: + configfiles.read_config_py(confpy.filename) + except configexc.ConfigFileErrors as exc: + # Make sure no other errors happened + for error in exc.errors: + assert isinstance(error.exception, configexc.BackendError) + @pytest.fixture def init_patch(qapp, fake_save_manager, config_tmpdir, data_tmpdir,