From b3acb51625c420d2bb37337cd118bbad6994b388 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Mon, 7 Sep 2026 21:59:39 +0200 Subject: [PATCH] fix: add double types tests --- tests/test_subconfig.py | 1 - tests/test_types.py | 37 ++++++++++++++++++++ tests/types/01-types/rougail.hcl | 8 +++++ tests/types/01-types/structures/00-main.yml | 13 +++++++ tests/types/01-types/types/00-main.yml | 20 +++++++++++ tests/types/02-double/rougail.hcl | 8 +++++ tests/types/02-double/structures/00-main.yml | 13 +++++++ tests/types/02-double/types/00-main.yml | 20 +++++++++++ tests/types/02-double/types/10-main.yml | 16 +++++++++ 9 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 tests/test_types.py create mode 100644 tests/types/01-types/rougail.hcl create mode 100644 tests/types/01-types/structures/00-main.yml create mode 100644 tests/types/01-types/types/00-main.yml create mode 100644 tests/types/02-double/rougail.hcl create mode 100644 tests/types/02-double/structures/00-main.yml create mode 100644 tests/types/02-double/types/00-main.yml create mode 100644 tests/types/02-double/types/10-main.yml diff --git a/tests/test_subconfig.py b/tests/test_subconfig.py index 815eb33..2e53159 100644 --- a/tests/test_subconfig.py +++ b/tests/test_subconfig.py @@ -5,7 +5,6 @@ from rougail.output_hcl import RougailOutputHcl as RougailOutput from rougail.error import DictConsistencyError - def _test_subconfig(error): rougailconfig = RougailConfig.copy() ################################## diff --git a/tests/test_types.py b/tests/test_types.py new file mode 100644 index 0000000..015f103 --- /dev/null +++ b/tests/test_types.py @@ -0,0 +1,37 @@ +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_types(name): + rougailconfig = RougailConfig.copy() + ################################## + rougailconfig['step.output'] = 'hcl' + rougailconfig["main_namespace"] = None + rougailconfig["types"] = [str((Path(__file__).parent / 'types' / name / 'types').absolute())] + rougailconfig["main_structural_directories"] = [str((Path(__file__).parent / 'types' / name / 'structures').absolute())] + ################################## + rougail = Rougail(rougailconfig) + config = rougail.run() + config.information.set("description_type", "path_and_description") + config.property.read_only() + generated_output = RougailOutput(config, rougailconfig=rougailconfig).run()[1] + output_file = Path(__file__).parent / 'types' / name / '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_types_01(): + _test_types('01-types') + + +def test_types_02(): + _test_types('02-double') diff --git a/tests/types/01-types/rougail.hcl b/tests/types/01-types/rougail.hcl new file mode 100644 index 0000000..ee35eee --- /dev/null +++ b/tests/types/01-types/rougail.hcl @@ -0,0 +1,8 @@ +a_new_block_1 "a_label" { + an_attribute = "a value" +} + + +a_new_block_2 "a_label" { + an_attribute = "a value" +} diff --git a/tests/types/01-types/structures/00-main.yml b/tests/types/01-types/structures/00-main.yml new file mode 100644 index 0000000..6107cfc --- /dev/null +++ b/tests/types/01-types/structures/00-main.yml @@ -0,0 +1,13 @@ +%YAML 1.2 +--- +version: 1.1 + +a_new_block_1: + type: a_block + +a_new_block_2: + hcl_type: block + + a_label: + type: a_label +... diff --git a/tests/types/01-types/types/00-main.yml b/tests/types/01-types/types/00-main.yml new file mode 100644 index 0000000..64edd73 --- /dev/null +++ b/tests/types/01-types/types/00-main.yml @@ -0,0 +1,20 @@ +%YAML 1.2 +--- +version: 1.1 + +a_block: + description: A block is a family with hcl_type attribute + hcl_type: block + + a_label: + description: A label is also a family with hcl_type attribute + hcl_type: label + + an_attribute: a value # An attribute in a block + +a_label: + description: A label is also a family with hcl_type attribute + hcl_type: label + + an_attribute: a value # An attribute in a block +... diff --git a/tests/types/02-double/rougail.hcl b/tests/types/02-double/rougail.hcl new file mode 100644 index 0000000..5adafe8 --- /dev/null +++ b/tests/types/02-double/rougail.hcl @@ -0,0 +1,8 @@ +a_new_block_1 "a_label" { + an_attribute = "a value new" +} + + +a_new_block_2 "a_label" { + an_attribute = "a value new" +} diff --git a/tests/types/02-double/structures/00-main.yml b/tests/types/02-double/structures/00-main.yml new file mode 100644 index 0000000..6107cfc --- /dev/null +++ b/tests/types/02-double/structures/00-main.yml @@ -0,0 +1,13 @@ +%YAML 1.2 +--- +version: 1.1 + +a_new_block_1: + type: a_block + +a_new_block_2: + hcl_type: block + + a_label: + type: a_label +... diff --git a/tests/types/02-double/types/00-main.yml b/tests/types/02-double/types/00-main.yml new file mode 100644 index 0000000..f369cc8 --- /dev/null +++ b/tests/types/02-double/types/00-main.yml @@ -0,0 +1,20 @@ +%YAML 1.2 +--- +version: 1.1 + +a_block_ori: + description: A block is a family with hcl_type attribute + hcl_type: block + + a_label: + description: A label is also a family with hcl_type attribute + hcl_type: label + + an_attribute: a value # An attribute in a block + +a_label_ori: + description: A label is also a family with hcl_type attribute + hcl_type: label + + an_attribute: a value # An attribute in a block +... diff --git a/tests/types/02-double/types/10-main.yml b/tests/types/02-double/types/10-main.yml new file mode 100644 index 0000000..53a16c4 --- /dev/null +++ b/tests/types/02-double/types/10-main.yml @@ -0,0 +1,16 @@ +%YAML 1.2 +--- +version: 1.1 + +a_block: + type: a_block_ori + + a_label: + + an_attribute: a value new + +a_label: + type: a_label_ori + + an_attribute: a value new +...