rougail/tests/test_makedict.py

68 lines
1.8 KiB
Python
Raw Normal View History

2019-11-26 20:33:24 +01:00
from lxml import etree
from os.path import isfile, join, isdir
from pytest import fixture, raises
from os import listdir, mkdir
from json import dump, load, dumps, loads
2019-12-02 10:31:55 +01:00
from tiramisu import Config
from rougail import load as rougail_load
from rougail.xml_compare import xml_compare
from rougail.error import CreoleDictConsistencyError
from rougail.config import dtdfilename
2019-11-26 20:33:24 +01:00
dico_dirs = 'tests/flattener_dicos'
test_ok = set()
for test in listdir(dico_dirs):
if isdir(join(dico_dirs, test)):
if isdir(join(dico_dirs, test, 'result')):
test_ok.add(test)
excludes = set([])
excludes = set([])
test_ok -= excludes
#test_ok = ['20family_dynamic']
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
def launch_flattener(test_dir):
eosfunc = join(dico_dirs, '../eosfunc/test.py')
cache_file = test_dir + '/result/00-base.xml'
fileio = open(cache_file)
xmlroot = etree.parse(fileio).getroot()
2019-12-02 10:31:55 +01:00
tiramisu_objects = rougail_load(xmlroot,
dtdfilename,
eosfunc)
config = Config(tiramisu_objects)
2019-11-26 20:33:24 +01:00
config.property.read_write()
makedict_dir = join(test_dir, 'makedict')
makedict_file = join(makedict_dir, 'base.json')
config_dict = config.value.dict()
# if not isfile(makedict_file) and config_dict:
# if not isdir(makedict_dir):
# mkdir(makedict_dir)
# with open(makedict_file, 'w') as fh:
# dump(config_dict, fh)
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))
def test_dictionary(test_dir):
test_dir = join(dico_dirs, test_dir)
launch_flattener(test_dir)