rougail/tests/test_makedict.py

68 lines
1.8 KiB
Python

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
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
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']
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()
tiramisu_objects = rougail_load(xmlroot,
dtdfilename,
eosfunc)
config = Config(tiramisu_objects)
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)