1
0
mirror of https://github.com/240596448/onec_codetemplate_parser.git synced 2025-11-23 21:34:39 +02:00

test context

This commit is contained in:
Vladimir Nadulich
2025-11-04 20:34:03 +03:00
parent c094e5f0a1
commit e8cf7cb173
7 changed files with 127 additions and 72 deletions

View File

@@ -2,40 +2,73 @@
import os
from pathlib import Path
from types import SimpleNamespace
import pytest
def get_all_fixtures():
"""Автоматически находим все файлы в директории тестовых данных."""
st_files = Path(__file__).parent.glob("fixtures/*.st")
list_st_files = [f for f in st_files if f.is_file()]
# Добавляем файлы из внешнего списка, если он задан
file_list = os.getenv("TEMPLATES_LIST")
if file_list:
if not Path(file_list).is_file():
raise FileNotFoundError(f"Файл списка дополнительных шаблонов не найден: {file_list}")
file_lines = Path(file_list).read_text(encoding='utf-8-sig').splitlines()
for item in file_lines:
item_path = Path(item).expanduser() if item.startswith("~") else Path(item)
if item_path.is_file():
list_st_files.append(item_path)
else:
raise FileNotFoundError(
f"Файл шаблона из списка дополнительных файлов "
f"({Path(file_list).name}) не найден: {item_path}")
def from_dir():
st_files = Path(__file__).parent.glob("fixtures/*.st")
list_st_files = [f for f in st_files if f.is_file()]
return list_st_files
return [pytest.param(e, id=e.name) for e in list_st_files]
def from_env():
# Добавляем файлы из внешнего списка, если он задан
list_st_files = []
file_list = os.getenv("TEMPLATES_LIST")
if file_list:
if not Path(file_list).is_file():
raise FileNotFoundError(f"Файл списка дополнительных шаблонов не найден: {file_list}")
file_lines = Path(file_list).read_text(encoding='utf-8-sig').splitlines()
for item in file_lines:
item_path = Path(item).expanduser() if item.startswith("~") else Path(item)
if item_path.is_file():
list_st_files.append(item_path)
else:
raise FileNotFoundError(
f"Файл шаблона из списка дополнительных файлов "
f"({Path(file_list).name}) не найден: {item_path}")
return list_st_files
@pytest.fixture(scope="class", name="test_file_path", params=get_all_fixtures())
def test_data_path(request):
"""Путь к каждому тестовому файлу."""
return Path(request.param)
list_st_files = from_dir()
list_st_files.extend(from_env())
result = []
for f in list_st_files:
if f.name.startswith("00-"):
spec = {"level": 0, "objects": 0}
elif f.name.startswith("01-"):
spec = {"level": 1, "objects": 1}
elif f.name.startswith("02-"):
spec = {"level": 1, "objects": 2}
else:
spec = {"level": None, "objects": None}
spec["name"] = f.name
spec["path"] = f
result.append(SimpleNamespace(**spec))
return [pytest.param(r, id=r.name) for r in result]
@pytest.fixture(scope="class", params=get_all_fixtures())
def file_path_spec(request):
return request.param
@pytest.fixture(scope="class")
def test_data(test_file_path):
def file_path(file_path_spec):
"""Путь к каждому тестовому файлу."""
return file_path_spec.path
@pytest.fixture(scope="class")
def file_data_spec(file_path_spec):
"""Данные каждого тестового файла."""
file_data = test_file_path.read_text(encoding='utf-8-sig')
return file_data
file_path_spec.data = file_path_spec.path.read_text(encoding='utf-8-sig')
return file_path_spec
@pytest.fixture(scope="class")
def file_data(file_data_spec):
"""Данные каждого тестового файла."""
return file_data_spec.data
@pytest.fixture()
def temp_src(tmp_path):