rougail/tests/test_others.py

183 lines
6.9 KiB
Python

from pytest import raises
import logging
from rougail import Rougail, RougailConfig
from rougail.error import DictConsistencyError
from tiramisu.error import ConflictError
from rougail_tests.utils import config_to_dict
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def test_mode_invalid_default():
# default variable mode is not in modes_level
rougailconfig = RougailConfig.copy()
rougailconfig['main_structural_directories'] = ['tests/personalize_mode/dictionary']
rougailconfig['modes_level'] = ['level1', 'level2']
with raises(ValueError) as err:
rougailconfig['default_family_mode'] = 'level3'
def test_mode_invalid_default_family():
# default family mode is not in modes_level
rougailconfig = RougailConfig.copy()
rougailconfig['main_structural_directories'] = ['tests/personalize_mode/dictionary']
rougailconfig['modes_level'] = ['level1', 'level2']
with raises(ValueError) as err:
rougailconfig['default_variable_mode'] = 'level3'
def test_personalize_mode():
rougailconfig = RougailConfig.copy()
rougailconfig['main_structural_directories'] = ['tests/personalize_mode/dictionary']
rougailconfig['modes_level'] = ['level1', 'level2']
rougailconfig['default_variable_mode'] = 'level1'
rougailconfig['default_family_mode'] = 'level1'
rougailconfig['tiramisu_cache'] = None
eolobj = Rougail(rougailconfig=rougailconfig)
eolobj.run()
def test_personalize_mode_unknown():
# a variable has an unknown mode
rougailconfig = RougailConfig.copy()
rougailconfig['main_structural_directories'] = ['tests/personalize_mode/dictionary']
rougailconfig['modes_level'] = ['level1']
rougailconfig['default_variable_mode'] = 'level1'
rougailconfig['default_family_mode'] = 'level1'
eolobj = Rougail(rougailconfig=rougailconfig)
with raises(DictConsistencyError) as err:
eolobj.converted.annotate()
assert err.value.errno == 71
def test_personalize_annotate_twice():
rougailconfig = RougailConfig.copy()
rougailconfig['main_structural_directories'] = ['tests/personalize_mode/dictionary']
rougailconfig['modes_level'] = ['level1', 'level2']
rougailconfig['default_variable_mode'] = 'level1'
rougailconfig['default_family_mode'] = 'level1'
eolobj = Rougail(rougailconfig=rougailconfig)
eolobj.converted.annotate()
with raises(DictConsistencyError) as err:
eolobj.converted.annotate()
assert err.value.errno == 85
def test_option_params():
rougailconfig = RougailConfig.copy()
rougailconfig['main_structural_directories'] = ['tests/default_option_params/structure']
rougailconfig["define_default_params"] = True
rougailconfig["default_params.unix_filename.test_existence"] = True
eolobj = Rougail(rougailconfig=rougailconfig)
with raises(ValueError):
eolobj.run()
eolobj = Rougail(rougailconfig=rougailconfig)
with raises(ValueError):
eolobj.run()
rougailconfig["default_params.unix_filename.test_existence"] = False
eolobj = Rougail(rougailconfig=rougailconfig)
eolobj.run()
def test_namespace():
rougailconfig = RougailConfig.copy()
rougailconfig['main_namespace'] = 'NS1'
rougailconfig['main_structural_directories'] = ['tests/namespace']
rougailconfig['extra_namespaces'] = {'NS2': ['tests/namespace'],
'NS3': ['tests/namespace'],
}
eolobj = Rougail(rougailconfig=rougailconfig)
assert dict(config_to_dict(eolobj.run().value.get())) == {'ns1.var1': 'NS1',
'ns1.var2': 'NS1',
'ns2.var1': 'NS2',
'ns2.var2': 'NS2',
'ns3.var1': 'NS3',
'ns3.var2': 'NS3'}
#
#
#def test_duplicate_0():
# rougailconfig = RougailConfig.copy()
# rougailconfig['main_namespace'] = None
# rougailconfig['main_structural_directories'] = ['tests/duplicates/0/']
# eolobj = Rougail(rougailconfig=rougailconfig)
# cfg = eolobj.run()
# cfg.value.get()
# cfg.option('od.od_val1').value.get()
# cfg.option('od.od_val2').value.get()
def test_duplicate_1():
rougailconfig = RougailConfig.copy()
rougailconfig['main_namespace'] = None
rougailconfig['main_structural_directories'] = ['tests/duplicates/1/']
eolobj = Rougail(rougailconfig=rougailconfig)
cfg = eolobj.run()
with raises(ConflictError):
cfg.value.get()
with raises(ConflictError):
cfg.option('od.od_val').value.get()
def test_duplicate_2():
rougailconfig = RougailConfig.copy()
rougailconfig['main_namespace'] = None
rougailconfig['main_structural_directories'] = ['tests/duplicates/2/']
eolobj = Rougail(rougailconfig=rougailconfig)
cfg = eolobj.run()
with raises(ConflictError):
cfg.value.get()
with raises(ConflictError):
cfg.option('od.od_val').value.get()
def test_duplicate_3():
rougailconfig = RougailConfig.copy()
rougailconfig['main_namespace'] = None
rougailconfig['main_structural_directories'] = ['tests/duplicates/3/']
eolobj = Rougail(rougailconfig=rougailconfig)
cfg = eolobj.run()
with raises(ConflictError):
cfg.value.get()
with raises(ConflictError):
cfg.option('od.od_val').value.get()
#
#
#def test_duplicate_4():
# rougailconfig = RougailConfig.copy()
# rougailconfig['main_namespace'] = None
# rougailconfig['main_structural_directories'] = ['tests/duplicates/4/']
# eolobj = Rougail(rougailconfig=rougailconfig)
# cfg = eolobj.run()
# with raises(ConflictError):
# cfg.value.get()
# with raises(ConflictError):
# cfg.option('od.od_val').value.get()
def test_duplicate_5():
rougailconfig = RougailConfig.copy()
rougailconfig['main_namespace'] = None
rougailconfig['main_structural_directories'] = ['tests/duplicates/5/']
eolobj = Rougail(rougailconfig=rougailconfig)
cfg = eolobj.run()
with raises(ConflictError):
cfg.value.get()
with raises(ConflictError):
cfg.option('od.od_val').value.get()
def test_isolated_namespace():
rougailconfig = RougailConfig.copy()
rougailconfig['main_namespace'] = 'rougail'
rougailconfig['main_structural_directories'] = ['tests/errors/00_9extra_outside/rougail/']
rougailconfig['extra_namespaces'] = {'extra': ['tests/errors/00_9extra_outside/extra/'],
'extra2': ['tests/errors/00_9extra_outside/extra2/'],
}
rougailconfig["isolated_namespace"] = False
eolobj = Rougail(rougailconfig=rougailconfig)
cfg = eolobj.run()
assert cfg.option('extra.variable').value.get() == 'no'
assert cfg.option('extra2.variable').value.get() == 'no'