1
0
mirror of https://github.com/240596448/onec_codetemplate_parser.git synced 2025-11-23 21:34:39 +02:00
Files
onec_codetemplate_parser/tests/test_core.py
2025-11-04 20:39:58 +03:00

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)