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