rougail/tests/test_others.py

184 lines
6.9 KiB
Python
Raw Permalink Normal View History

2021-02-22 19:28:51 +01:00
from pytest import raises
2023-10-12 08:17:30 +02:00
import logging
2021-02-22 19:28:51 +01:00
2023-10-12 08:17:30 +02:00
from rougail import Rougail, RougailConfig
2021-02-22 19:28:51 +01:00
from rougail.error import DictConsistencyError
from tiramisu.error import ConflictError
2021-02-22 19:28:51 +01:00
from rougail_tests.utils import config_to_dict
2023-10-12 08:17:30 +02:00
logger = logging.getLogger()
logger.setLevel(logging.INFO)
2021-02-22 19:28:51 +01:00
def test_mode_invalid_default():
2022-10-01 22:27:22 +02:00
# default variable mode is not in modes_level
rougailconfig = RougailConfig.copy()
2025-09-22 14:36:32 +02:00
rougailconfig['main_structural_directories'] = ['tests/personalize_mode/dictionary']
rougailconfig['modes_level'] = ['level1', 'level2']
with raises(ValueError) as err:
rougailconfig['default_family_mode'] = 'level3'
2021-02-22 19:28:51 +01:00
def test_mode_invalid_default_family():
2022-10-01 22:27:22 +02:00
# default family mode is not in modes_level
rougailconfig = RougailConfig.copy()
2025-09-22 14:36:32 +02:00
rougailconfig['main_structural_directories'] = ['tests/personalize_mode/dictionary']
rougailconfig['modes_level'] = ['level1', 'level2']
with raises(ValueError) as err:
rougailconfig['default_variable_mode'] = 'level3'
2021-02-22 19:28:51 +01:00
def test_personalize_mode():
rougailconfig = RougailConfig.copy()
2025-09-22 14:36:32 +02:00
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()
2021-02-22 19:28:51 +01:00
def test_personalize_mode_unknown():
2022-10-01 22:27:22 +02:00
# a variable has an unknown mode
rougailconfig = RougailConfig.copy()
2025-09-22 14:36:32 +02:00
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)
2022-10-01 22:27:22 +02:00
with raises(DictConsistencyError) as err:
2023-10-12 08:17:30 +02:00
eolobj.converted.annotate()
2022-10-01 22:27:22 +02:00
assert err.value.errno == 71
2023-10-12 08:17:30 +02:00
def test_personalize_annotate_twice():
rougailconfig = RougailConfig.copy()
2025-09-22 14:36:32 +02:00
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)
2023-10-12 08:17:30 +02:00
eolobj.converted.annotate()
with raises(DictConsistencyError) as err:
eolobj.converted.annotate()
assert err.value.errno == 85
def test_option_params():
rougailconfig = RougailConfig.copy()
2025-09-22 14:36:32 +02:00
rougailconfig['main_structural_directories'] = ['tests/default_option_params/structure']
2025-05-09 08:21:31 +02:00
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'
2025-09-22 14:36:32 +02:00
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
2025-09-22 14:36:32 +02:00
# 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
2025-09-22 14:36:32 +02:00
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
2025-09-22 14:36:32 +02:00
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
2025-09-22 14:36:32 +02:00
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
2025-09-22 14:36:32 +02:00
# 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
2025-09-22 14:36:32 +02:00
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'