2021-04-13 19:05:01 +02:00
|
|
|
from shutil import rmtree, copyfile, copytree
|
|
|
|
from os import getcwd, makedirs
|
|
|
|
from os.path import isfile, join, isdir
|
|
|
|
from pytest import fixture, raises
|
|
|
|
from os import listdir
|
|
|
|
from json import load
|
|
|
|
|
|
|
|
from rougail import RougailUpgrade, RougailConfig
|
|
|
|
from rougail.error import DictConsistencyError
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dico_dirs = 'tests/dictionaries_old'
|
2022-10-01 22:27:22 +02:00
|
|
|
dest_dir = 'tmp'
|
2021-04-13 19:05:01 +02:00
|
|
|
|
|
|
|
|
|
|
|
test_ok = set()
|
|
|
|
|
|
|
|
for test in listdir(dico_dirs):
|
|
|
|
if isdir(join(dico_dirs, test)):
|
|
|
|
test_ok.add(test)
|
|
|
|
|
|
|
|
excludes = set([])
|
|
|
|
#excludes = set(['01base_file_utfchar'])
|
|
|
|
test_ok -= excludes
|
|
|
|
#test_ok = ['00load_autofreeze']
|
|
|
|
#test_ok = []
|
|
|
|
|
|
|
|
ORI_DIR = getcwd()
|
|
|
|
|
|
|
|
debug = False
|
|
|
|
#debug = True
|
|
|
|
|
|
|
|
test_ok = list(test_ok)
|
|
|
|
test_ok.sort()
|
|
|
|
if isdir(dest_dir):
|
|
|
|
rmtree(dest_dir)
|
|
|
|
makedirs(dest_dir)
|
|
|
|
copyfile(join(dico_dirs, '__init__.py'), join(dest_dir, '__init__.py'))
|
|
|
|
#RougailConfig['variable_namespace'] = 'configuration'
|
|
|
|
|
|
|
|
|
|
|
|
@fixture(scope="module", params=test_ok)
|
|
|
|
def test_dir(request):
|
|
|
|
return request.param
|
|
|
|
|
|
|
|
|
|
|
|
def launch_test(test_dir):
|
|
|
|
new_dest_dir = join(dest_dir, test_dir.rsplit('/', 1)[1])
|
|
|
|
makedirs(new_dest_dir)
|
|
|
|
upgrade = RougailUpgrade()
|
|
|
|
try:
|
2022-11-02 22:52:50 +01:00
|
|
|
upgrade.load_xml_from_folders(join(test_dir, 'xml'), new_dest_dir, RougailConfig['variable_namespace'], display=False)
|
2021-04-13 19:05:01 +02:00
|
|
|
except Exception as err:
|
|
|
|
# import traceback
|
|
|
|
# traceback.print_exc()
|
2021-09-13 11:26:38 +02:00
|
|
|
# print(f'cannot convert {test_dir}: {err}')
|
2021-04-13 19:05:01 +02:00
|
|
|
rmtree(new_dest_dir)
|
|
|
|
copytree(test_dir, new_dest_dir)
|
|
|
|
return
|
|
|
|
subfolder = join(test_dir, 'subfolder')
|
|
|
|
if isdir(subfolder):
|
|
|
|
makedirs(join(new_dest_dir, 'subfolder'))
|
|
|
|
upgrade.load_xml_from_folders(subfolder, join(new_dest_dir, 'subfolder'), RougailConfig['variable_namespace'], display=False)
|
2022-11-02 22:52:50 +01:00
|
|
|
if isdir(join(test_dir, 'xml', 'extra_dirs')):
|
2021-04-13 19:05:01 +02:00
|
|
|
extras = listdir(join(test_dir, 'extra_dirs'))
|
|
|
|
extras.sort()
|
|
|
|
for extra in extras:
|
|
|
|
subfolder = join(test_dir, 'extra_dirs', extra)
|
|
|
|
if isdir(subfolder):
|
|
|
|
makedirs(join(new_dest_dir, 'extra_dirs', extra))
|
|
|
|
upgrade.load_xml_from_folders(subfolder, join(new_dest_dir, 'extra_dirs', extra), extra, display=False)
|
|
|
|
# copy others files
|
|
|
|
for filename in listdir(test_dir):
|
|
|
|
src_filename = join(test_dir, filename)
|
|
|
|
dst_filename = join(new_dest_dir, filename)
|
|
|
|
if filename.startswith('errno_') or filename in ['__init__.py']:
|
|
|
|
copyfile(src_filename, dst_filename)
|
|
|
|
elif filename in ['tmpl', 'makedict', 'tiramisu', 'result', 'patches']:
|
|
|
|
copytree(src_filename, dst_filename, symlinks=True)
|
2022-10-01 22:27:22 +02:00
|
|
|
rmtree(dest_dir)
|
2021-04-13 19:05:01 +02:00
|
|
|
|
|
|
|
|
|
|
|
def test_dictionary(test_dir):
|
|
|
|
assert getcwd() == ORI_DIR
|
|
|
|
test_dir = join(dico_dirs, test_dir)
|
|
|
|
launch_test(test_dir)
|
|
|
|
assert getcwd() == ORI_DIR
|