62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
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
|