2019-11-26 20:33:24 +01:00
|
|
|
from lxml import etree
|
|
|
|
from os.path import isfile, join, isdir
|
2020-02-14 17:59:39 +01:00
|
|
|
from pytest import fixture, mark
|
2019-11-26 20:33:24 +01:00
|
|
|
from os import listdir, mkdir
|
|
|
|
from json import dump, load, dumps, loads
|
|
|
|
|
2019-12-02 10:31:55 +01:00
|
|
|
from tiramisu import Config
|
2019-11-26 20:33:24 +01:00
|
|
|
|
|
|
|
|
2020-08-12 08:23:38 +02:00
|
|
|
dico_dirs = 'tests/dictionaries'
|
2019-11-26 20:33:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
test_ok = set()
|
|
|
|
|
|
|
|
for test in listdir(dico_dirs):
|
|
|
|
if isdir(join(dico_dirs, test)):
|
2020-07-29 08:59:40 +02:00
|
|
|
if isdir(join(dico_dirs, test, 'tiramisu')):
|
2019-11-26 20:33:24 +01:00
|
|
|
test_ok.add(test)
|
|
|
|
|
2020-11-18 22:18:16 +01:00
|
|
|
debug = False
|
|
|
|
#debug = True
|
2019-11-26 20:33:24 +01:00
|
|
|
excludes = set([])
|
2020-11-20 18:02:40 +01:00
|
|
|
#excludes = set(['01base_file_utfchar'])
|
2019-11-26 20:33:24 +01:00
|
|
|
test_ok -= excludes
|
2020-07-16 09:50:01 +02:00
|
|
|
#test_ok = ['10check_valid_ipnetmask']
|
2019-11-26 20:33:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
test_ok = list(test_ok)
|
|
|
|
test_ok.sort()
|
|
|
|
|
|
|
|
|
|
|
|
@fixture(scope="module", params=test_ok)
|
|
|
|
def test_dir(request):
|
|
|
|
return request.param
|
|
|
|
|
|
|
|
|
2020-02-14 17:59:39 +01:00
|
|
|
async def launch_flattener(test_dir):
|
2019-11-26 20:33:24 +01:00
|
|
|
makedict_dir = join(test_dir, 'makedict')
|
|
|
|
makedict_file = join(makedict_dir, 'base.json')
|
2020-07-20 18:13:53 +02:00
|
|
|
|
|
|
|
modulepath = test_dir.replace('/', '.') + '.tiramisu.base'
|
|
|
|
mod = __import__(modulepath)
|
|
|
|
for token in modulepath.split(".")[1:]:
|
|
|
|
mod = getattr(mod, token)
|
|
|
|
config = await Config(mod.option_0)
|
2020-12-24 17:52:14 +01:00
|
|
|
await config.information.set('test_information', 'value')
|
2020-07-06 19:47:45 +02:00
|
|
|
await config.property.read_only()
|
|
|
|
await config.property.pop('mandatory')
|
2020-10-03 22:10:32 +02:00
|
|
|
await config.information.set('info', 'value')
|
2020-12-26 15:15:51 +01:00
|
|
|
config_dict = await config.value.dict(leader_to_list=True)
|
2020-04-23 07:34:34 +02:00
|
|
|
if config_dict:
|
|
|
|
if not isdir(makedict_dir):
|
|
|
|
mkdir(makedict_dir)
|
2020-12-24 17:37:14 +01:00
|
|
|
if not isfile(makedict_file) or debug:
|
2020-07-24 14:59:09 +02:00
|
|
|
with open(makedict_file, 'w') as fh:
|
2021-02-21 19:51:09 +01:00
|
|
|
dump(config_dict, fh, indent=4)
|
2020-07-24 14:59:09 +02:00
|
|
|
fh.write('\n')
|
2019-11-26 20:33:24 +01:00
|
|
|
if not isfile(makedict_file):
|
|
|
|
if config_dict:
|
|
|
|
raise Exception('dict is not empty')
|
|
|
|
else:
|
|
|
|
with open(makedict_file, 'r') as fh:
|
|
|
|
assert load(fh) == loads(dumps(config_dict))
|
|
|
|
|
|
|
|
|
2020-02-14 17:59:39 +01:00
|
|
|
@mark.asyncio
|
|
|
|
async def test_dictionary(test_dir):
|
2019-11-26 20:33:24 +01:00
|
|
|
test_dir = join(dico_dirs, test_dir)
|
2020-02-14 17:59:39 +01:00
|
|
|
await launch_flattener(test_dir)
|