rougail-output-doc/tests/test_mode.py

74 lines
2.2 KiB
Python
Raw Normal View History

2025-10-14 12:58:39 +02:00
import os
from pathlib import Path
2025-01-04 11:52:37 +01:00
from rougail import Rougail
from rougail.config import get_rougail_config
from rougail.output_doc import RougailOutputDoc
2025-10-14 12:58:39 +02:00
os.environ['COLUMNS'] = '80'
2025-11-29 22:21:06 +01:00
def change_mode(subconfig, modes):
read_only = set(modes)
read_write = set(modes)
subconfig.property.setdefault(
frozenset(subconfig.property.default("read_write", "append") | read_write), "read_write", "append"
)
subconfig.property.setdefault(
frozenset(subconfig.property.default("read_only", "remove") | (read_write - read_only)), "read_only", "remove"
)
subconfig.property.setdefault(
frozenset(subconfig.property.default("read_only", "append") | read_only), "read_only", "append"
)
2026-05-07 08:24:22 +02:00
for p in read_only:
subconfig.permissive.add(p)
2025-11-29 22:21:06 +01:00
subconfig.property.read_write()
def _test(modes):
test_dir = Path(__file__).resolve().parent
rougailconfig = get_rougail_config(backward_compatibility=False)
rougailconfig['step.output'] = 'doc'
# rougailconfig['tiramisu_cache'] = 'p.py'
dirs = [str(test_dir / 'mode')]
2026-05-07 08:24:22 +02:00
rougailconfig['modes_level'] = ['basic', 'standard', 'advanced', 'bitwarden']
2025-09-22 09:42:46 +02:00
rougailconfig['main_structural_directories'] = dirs
rougailconfig['doc.output_format'] = 'asciidoc'
2026-05-07 08:24:22 +02:00
for content in ["variables", "example"]:
rougailconfig["doc.contents"] = [content]
rougail = Rougail(rougailconfig)
config = rougail.run()
change_mode(config, modes)
inventory = RougailOutputDoc(config, rougailconfig=rougailconfig)
doc = inventory.run()[1]
result_file = test_dir / "results_mode" / f'{"_".join(modes)}_{content}.adoc'
if not result_file.is_file():
with open(str(result_file), 'w') as docfh:
docfh.write(doc)
with open(str(result_file)) as docfh:
result = docfh.read()
assert doc == result, result_file
def test_mode_advanced():
_test(['basic', 'standard'])
def test_mode_basic_only():
_test(['standard', 'advanced'])
def test_mode_standard():
_test(['basic', 'advanced'])
def test_mode_standard_advanced():
_test(['basic'])
def test_mode_basic_advanced():
_test(['standard'])
def test_mode_basic_standard():
_test(['advanced'])