2019-12-02 10:33:46 +01:00
|
|
|
from os import listdir, mkdir
|
|
|
|
from os.path import join, isdir, isfile
|
|
|
|
from shutil import rmtree
|
2020-02-14 17:59:39 +01:00
|
|
|
from pytest import fixture, mark
|
2019-12-02 10:33:46 +01:00
|
|
|
from lxml.etree import parse
|
|
|
|
from tiramisu import Config
|
|
|
|
|
2020-07-29 08:59:40 +02:00
|
|
|
from rougail import template
|
2019-12-02 10:33:46 +01:00
|
|
|
|
|
|
|
|
2020-08-08 08:58:35 +02:00
|
|
|
template_dirs = 'tests/dictionaries'
|
2020-11-20 18:02:40 +01:00
|
|
|
excludes = set([])
|
|
|
|
#excludes = set(['01base_file_utfchar'])
|
|
|
|
test_ok = {f for f in listdir(template_dirs) if not f.startswith('_') and isdir(join(template_dirs, f, 'tmpl'))}
|
|
|
|
test_ok -= excludes
|
2020-12-26 15:15:51 +01:00
|
|
|
#test_ok = ['40ifin_leadershipauto']
|
2019-12-02 10:33:46 +01:00
|
|
|
|
|
|
|
|
|
|
|
@fixture(scope="module", params=test_ok)
|
|
|
|
def test_dir(request):
|
|
|
|
return request.param
|
|
|
|
|
|
|
|
|
2020-07-06 19:47:45 +02:00
|
|
|
def find_files(dirname: str,
|
|
|
|
root: list,
|
|
|
|
files: set,
|
|
|
|
) -> None:
|
2019-12-22 11:04:39 +01:00
|
|
|
for filename in listdir(dirname):
|
|
|
|
abs_dirname = join(dirname, filename)
|
|
|
|
root_file = root + [filename]
|
|
|
|
if isdir(join(dirname, filename)):
|
2020-07-06 19:47:45 +02:00
|
|
|
find_files(abs_dirname,
|
|
|
|
root_file,
|
|
|
|
files,
|
|
|
|
)
|
2019-12-22 11:04:39 +01:00
|
|
|
else:
|
|
|
|
files.add(join(*root_file))
|
|
|
|
|
|
|
|
|
2020-02-14 17:59:39 +01:00
|
|
|
@mark.asyncio
|
|
|
|
async def test_dictionary(test_dir):
|
2019-12-02 10:33:46 +01:00
|
|
|
test_dir = join(template_dirs, test_dir)
|
|
|
|
tmp_dir = join(test_dir, 'tmp')
|
2020-07-29 08:59:40 +02:00
|
|
|
|
2020-08-08 08:58:35 +02:00
|
|
|
modulepath = test_dir.replace('/', '.') + '.tiramisu.base'
|
2020-07-29 08:59:40 +02:00
|
|
|
mod = __import__(modulepath)
|
|
|
|
for token in modulepath.split(".")[1:]:
|
|
|
|
mod = getattr(mod, token)
|
|
|
|
config = await Config(mod.option_0)
|
|
|
|
await config.property.read_only()
|
|
|
|
|
2019-12-02 10:33:46 +01:00
|
|
|
funcs_file = join(template_dirs, '../eosfunc/test.py')
|
2019-12-21 12:21:42 +01:00
|
|
|
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)
|
2020-11-20 18:02:40 +01:00
|
|
|
template.Config['patch_dir'] = join(test_dir, 'patches')
|
2020-02-14 17:59:39 +01:00
|
|
|
await template.generate(config,
|
|
|
|
funcs_file,
|
|
|
|
distrib_dir,
|
|
|
|
tmp_dir,
|
2020-04-23 07:34:34 +02:00
|
|
|
dest_dir,
|
2020-07-08 13:18:49 +02:00
|
|
|
)
|
2020-02-14 17:59:39 +01:00
|
|
|
list_templates = set()
|
2020-04-23 07:34:34 +02:00
|
|
|
if isdir(dest_dir):
|
2020-07-06 19:47:45 +02:00
|
|
|
find_files(dest_dir,
|
|
|
|
[],
|
|
|
|
list_templates,
|
|
|
|
)
|
2019-12-22 11:04:39 +01:00
|
|
|
list_results = set()
|
2020-02-14 17:59:39 +01:00
|
|
|
if isdir(join(test_dir, 'result')):
|
2020-07-06 19:47:45 +02:00
|
|
|
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
|
2019-12-22 11:29:57 +01:00
|
|
|
rmtree(dest_dir)
|
|
|
|
rmtree(tmp_dir)
|