51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
from pytest import raises
|
|
from pathlib import Path
|
|
from rougail import Rougail, RougailConfig
|
|
from rougail.output_hcl import RougailOutputHcl as RougailOutput
|
|
from rougail.error import DictConsistencyError
|
|
|
|
|
|
|
|
def _test_subconfig(error):
|
|
rougailconfig = RougailConfig.copy()
|
|
##################################
|
|
rougailconfig['step.output'] = 'hcl'
|
|
rougailconfig["main_namespace"] = None
|
|
rougailconfig["main_structural_directories"] = [str((Path(__file__).parent / 'structures_subconfig').absolute())]
|
|
##################################
|
|
rougail = Rougail(rougailconfig)
|
|
config = rougail.run()
|
|
config.information.set("description_type", "path_and_description")
|
|
config.property.read_only()
|
|
if not error:
|
|
subconfig = config
|
|
elif error == "block":
|
|
subconfig = config.option("a_family")
|
|
else:
|
|
subconfig = config.option("a_family.a_bock")
|
|
generated_output = RougailOutput(subconfig, rougailconfig=rougailconfig, root_config=config, true_config=config).run()[1]
|
|
output_file = Path(__file__).parent / 'results_subconfig' / 'rougail.hcl'
|
|
if not output_file.is_file():
|
|
if not output_file.parent.is_dir():
|
|
output_file.parent.mkdir()
|
|
with output_file.open('w') as outfh:
|
|
outfh.write(generated_output)
|
|
with output_file.open() as outfh:
|
|
attented_output = outfh.read()
|
|
assert generated_output == attented_output, f'filename {output_file}'
|
|
|
|
|
|
def test_subconfig_error():
|
|
with raises(DictConsistencyError) as err:
|
|
_test_subconfig(None)
|
|
assert err.value.errno == 500
|
|
|
|
|
|
def test_subconfig():
|
|
_test_subconfig("block")
|
|
|
|
|
|
def test_subconfig_error_label():
|
|
with raises(DictConsistencyError) as err:
|
|
_test_subconfig("label")
|
|
assert err.value.errno == 501
|