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. raising: Raise exceptions happening in config.py.
This is needed during tests to use pytest's inspection. 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) 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) basename = os.path.basename(filename)

View File

@ -273,14 +273,15 @@ class ConfPy:
'qbmodule.run(config)') 'qbmodule.run(config)')
@pytest.fixture
def confpy(tmpdir, config_tmpdir, data_tmpdir, config_stub, key_config_stub):
return ConfPy(tmpdir)
class TestConfigPyModules: class TestConfigPyModules:
pytestmark = pytest.mark.usefixtures('config_stub', 'key_config_stub') pytestmark = pytest.mark.usefixtures('config_stub', 'key_config_stub')
@pytest.fixture
def confpy(self, tmpdir, config_tmpdir, data_tmpdir):
return ConfPy(tmpdir)
@pytest.fixture @pytest.fixture
def qbmodulepy(self, tmpdir): def qbmodulepy(self, tmpdir):
return ConfPy(tmpdir, filename="qbmodule.py") return ConfPy(tmpdir, filename="qbmodule.py")
@ -342,10 +343,6 @@ class TestConfigPy:
pytestmark = pytest.mark.usefixtures('config_stub', 'key_config_stub') 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): def test_assertions(self, confpy):
"""Make sure assertions in config.py work for these tests.""" """Make sure assertions in config.py work for these tests."""
confpy.write('assert False') confpy.write('assert False')
@ -660,6 +657,21 @@ class TestConfigPyWriter:
lines = pyfile.read_text('utf-8').splitlines() lines = pyfile.read_text('utf-8').splitlines()
assert '# Autogenerated config.py' in lines 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 @pytest.fixture
def init_patch(qapp, fake_save_manager, config_tmpdir, data_tmpdir, def init_patch(qapp, fake_save_manager, config_tmpdir, data_tmpdir,