rougail-output-display/tests/test_load.py

95 lines
3.4 KiB
Python
Raw Normal View History

2024-12-02 20:22:50 +01:00
from pytest import fixture # , raises
from pathlib import Path
from rougail import Rougail
2025-12-02 13:59:33 +01:00
from rougail.output_display import RougailOutputDisplay as RougailOutput
2024-12-02 20:22:50 +01:00
from rougail_tests.utils import get_structures_list, get_rougail_config, get_values_for_config
2025-12-03 21:49:02 +01:00
EXT = {'console': 'sh', 'github': 'md'}
2024-12-02 20:22:50 +01:00
excludes = []
#excludes = [
# '60_2family_dynamic_jinja_fill_sub_group_2',
#]
test_ok = get_structures_list(excludes)
2025-12-03 21:49:02 +01:00
# test_ok = [Path('../rougail-tests/structures/00_6boolean')]
2024-12-02 20:22:50 +01:00
def idfn(fixture_value):
return fixture_value.name
@fixture(scope="module", params=test_ok, ids=idfn)
def test_dir(request):
return request.param
2025-12-02 13:59:33 +01:00
def gen_cases():
for read_write in [False, True]:
for mandatory in [False, True]:
for show_secrets in [False, True]:
yield read_write, mandatory, show_secrets
def _test_structural_files(test_dir, namespace):
2024-12-02 20:22:50 +01:00
rougailconfig = get_rougail_config(test_dir, namespace)
if not rougailconfig:
return
2025-12-02 13:59:33 +01:00
rougailconfig['step.output'] = 'display'
2025-12-03 21:49:02 +01:00
rougailconfig["display.console.max_width"] = 120
2025-12-02 13:59:33 +01:00
for do_calc in [False, True]:
rougail = Rougail(rougailconfig)
config = rougail.run()
config.information.set("description_type", "description")
if do_calc:
get_values_for_config(config)
for read_write, mandatory, show_secrets in gen_cases():
if not do_calc and (mandatory or not read_write):
continue
# print(read_write, mandatory, show_secrets, do_calc)
2025-12-03 21:49:02 +01:00
for output_format, ext in EXT.items():
rougailconfig['display.output_format'] = output_format
rougailconfig["display.mandatory"] = mandatory
rougailconfig["display.show_secrets"] = show_secrets
##################################
dir_name = 'test'
if namespace:
dir_name += '_namespace'
elif (test_dir / 'force_namespace').is_file():
return
##################################
if read_write:
dir_name += '_read_write'
if mandatory:
dir_name += '_mandatory'
if not show_secrets:
dir_name += '_secrets'
if not do_calc:
dir_name += '_errors'
output_file = Path(__file__).parent / 'results' / dir_name / (test_dir.name + "." + ext)
##################################
if read_write:
config.property.read_write()
else:
config.property.read_only()
generated_output = RougailOutput(config, rougailconfig=rougailconfig).run()[1]
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}'
2025-12-02 13:59:33 +01:00
def test_structural_files_display(test_dir):
_test_structural_files(test_dir, True)
def test_structural_files_display_no_namespace(test_dir):
_test_structural_files(test_dir, False)