Add a test to make sure :write-config-py files actually work

This commit is contained in:
Florian Bruhin 2017-10-05 10:48:14 +02:00
parent 3cb93b22ae
commit 712e4a975a
2 changed files with 23 additions and 8 deletions

View File

@ -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)

View File

@ -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,