from pytest import raises import logging from rougail import Rougail, RougailConfig from rougail.error import DictConsistencyError 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['dictionaries_dir'] = ['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['dictionaries_dir'] = ['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['dictionaries_dir'] = ['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['dictionaries_dir'] = ['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['dictionaries_dir'] = ['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['dictionaries_dir'] = ['tests/default_option_params/structure'] 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['dictionaries_dir'] = ['tests/namespace'] rougailconfig['extra_dictionaries'] = {'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'}