rougail/tests/test_template.py

74 lines
2.2 KiB
Python
Raw Normal View History

2019-12-02 10:33:46 +01:00
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
2019-12-22 11:04:39 +01:00
def find_files(dirname, root, files):
for filename in listdir(dirname):
abs_dirname = join(dirname, filename)
root_file = root + [filename]
if isdir(join(dirname, filename)):
find_files(abs_dirname, root_file, files)
else:
files.add(join(*root_file))
2019-12-02 10:33:46 +01:00
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')
2019-12-02 10:33:46 +01:00
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')):
2019-12-22 11:04:39 +01:00
list_templates = set()
find_files(join(dest_dir), [], list_templates)
else:
list_templates = set()
2019-12-22 11:04:39 +01:00
list_results = set()
find_files(join(test_dir, 'result'), [], list_results)
2019-12-02 10:33:46 +01:00
assert list_templates == list_results
2019-12-22 11:04:39 +01:00
for result in list_results:
template_file = join(dest_dir, result)
2019-12-02 10:33:46 +01:00
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