from os import listdir, mkdir from os.path import join, isdir, isfile from shutil import rmtree from pytest import fixture from lxml.etree import parse from tiramisu import Config from rougail import template, load from rougail.config import dtdfilename template_dirs = 'tests/templates' test_ok = listdir(template_dirs) @fixture(scope="module", params=test_ok) def test_dir(request): return request.param def test_dictionary(test_dir): test_dir = join(template_dirs, test_dir) tmp_dir = join(test_dir, 'tmp') funcs_file = join(template_dirs, '../eosfunc/test.py') distrib_dir = join(test_dir, 'tmpl') if isdir(tmp_dir): rmtree(tmp_dir) mkdir(tmp_dir) dest_dir = join(test_dir, 'dest') if isdir(dest_dir): rmtree(dest_dir) mkdir(dest_dir) with open(join(test_dir, '00-base.xml')) as fileio: xmlroot = parse(fileio).getroot() optiondescription = load(xmlroot, dtdfilename, funcs_file) config = Config(optiondescription) config.property.read_only() template.generate(config, funcs_file, distrib_dir, tmp_dir, dest_dir) if isdir(join(dest_dir, 'test')): list_templates = set(listdir(join(dest_dir, 'test'))) else: list_templates = set() list_results = set(listdir(join(test_dir, 'result'))) assert list_templates == list_results for result in listdir(join(test_dir, 'result')): template_file = join(dest_dir, 'test', result) if not isfile(template_file): raise Exception(f'{template_file} is not generated') with open(join(test_dir, 'result', result), 'r') as fh: result_file = fh.read() with open(template_file, 'r') as fh: generated_file = fh.read() assert result_file == generated_file