183 lines
6.9 KiB
Python
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'
|