You've already forked onec_codetemplate_parser
mirror of
https://github.com/240596448/onec_codetemplate_parser.git
synced 2025-11-23 21:34:39 +02:00
61 lines
3.0 KiB
Python
61 lines
3.0 KiB
Python
from onec_codetemplate_parser import repository
|
|
from onec_codetemplate_parser.parser import parse
|
|
from tests.common import check_files_sequential, folder_contains_files, folder_is_empty
|
|
|
|
class TestReadSkobkofile:
|
|
|
|
def test_00_test_file_exist(self, file_path):
|
|
assert file_path.exists()
|
|
|
|
def test_01_parse_eq_compile(self, file_data):
|
|
root = parse(file_data)
|
|
new_data = root.compile()
|
|
assert new_data == file_data
|
|
|
|
def test_02_save_and_read(self, file_data, tmp_path):
|
|
root = parse(file_data)
|
|
new_data = root.compile()
|
|
|
|
tmp_file = tmp_path / 'tmp.st'
|
|
tmp_file.write_text(new_data, encoding='utf-8-sig')
|
|
new_data = tmp_file.read_text(encoding='utf-8-sig')
|
|
assert new_data == file_data
|
|
|
|
|
|
class TestWriteToFiles:
|
|
|
|
def test_white_to_src(self, file_data_spec, temp_src):
|
|
root = parse(file_data_spec.data)
|
|
root.to_src(temp_src)
|
|
|
|
# файл не пустой - что-то в src должно быть
|
|
if file_data_spec.level is None or file_data_spec.level > 0:
|
|
assert folder_contains_files(temp_src), f"В папке нет ни одного файла {temp_src}"
|
|
assert not folder_is_empty(temp_src), f"Папка src пустая {temp_src}"
|
|
|
|
# объектов больше одного - всегда одна папка первого уровня
|
|
if file_data_spec.objects is None or file_data_spec.objects > 1:
|
|
dirs = [p for p in temp_src.iterdir() if p.is_dir()]
|
|
assert len(dirs) == 1, f"Ожидалась 1 папка в src, получили {len(dirs)}"
|
|
|
|
# один объект - одна папка без файлов
|
|
if file_data_spec.objects == 1:
|
|
dirs = [p for p in next(temp_src.iterdir()).iterdir() if p.is_dir()]
|
|
assert len(dirs) == 0, f"Ожидалась что папок 2 уровня не будет в src/001, получили {len(dirs)}"
|
|
|
|
files = [p for p in next(temp_src.iterdir()).iterdir() if p.is_file()]
|
|
assert len(files) == 1, f"Должен быть только .мета-файл в src/001 {temp_src}"
|
|
|
|
if file_data_spec.objects == 2:
|
|
dirs = [p for p in next(temp_src.iterdir()).iterdir() if p.is_dir()]
|
|
assert len(dirs) == 0, f"Ожидалась 1 папка в src/001, получили {len(dirs)}"
|
|
|
|
files = [p for p in next(temp_src.iterdir()).iterdir() if p.is_file()]
|
|
assert len(files) == 2, f"Ожидалось 2 файла в src/001(.meta и leaf), получили {len(files)}"
|
|
|
|
if file_data_spec.name == "09-brackets":
|
|
folder = "001.0_Новый1"
|
|
assert (temp_src/folder).exists(), f"Папка первого уровня {folder} не найдена в {file_data_spec.name}"
|
|
subfiles = list(p.name for p in repository.dir_items(temp_src/folder))
|
|
check_files_sequential(subfiles)
|