2025-10-31 15:23:24 +03:00
|
|
|
"""fixtures for tests"""
|
|
|
|
|
|
2025-11-03 00:38:14 +03:00
|
|
|
import os
|
|
|
|
|
import json
|
2025-10-21 22:33:34 +03:00
|
|
|
from pathlib import Path
|
2025-10-31 15:23:24 +03:00
|
|
|
import pytest
|
2025-10-21 22:33:34 +03:00
|
|
|
|
2025-11-03 00:38:14 +03:00
|
|
|
def get_all_fixtures():
|
2025-11-02 23:16:21 +03:00
|
|
|
"""Автоматически находим все файлы в директории тестовыйх данных."""
|
|
|
|
|
st_files = Path(__file__).parent.glob("fixtures/*.st")
|
2025-11-01 01:56:12 +03:00
|
|
|
list_st_files = [f for f in st_files if f.is_file()]
|
|
|
|
|
|
2025-11-03 00:38:14 +03:00
|
|
|
"""Добавляем файлы из внешнего списка, если он задан."""
|
|
|
|
|
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 [pytest.param(e, id=e.name) for e in list_st_files]
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope="class", name="test_file_path", params=get_all_fixtures())
|
2025-11-01 01:56:12 +03:00
|
|
|
def test_data_path(request):
|
2025-11-02 23:16:21 +03:00
|
|
|
"""
|
|
|
|
|
Путь к каждому тестовому файлу.
|
|
|
|
|
"""
|
2025-11-01 01:56:12 +03:00
|
|
|
return Path(request.param)
|
2025-10-21 22:33:34 +03:00
|
|
|
|
|
|
|
|
@pytest.fixture(scope="class")
|
2025-10-31 15:23:24 +03:00
|
|
|
def test_data(test_file_path):
|
2025-11-02 23:16:21 +03:00
|
|
|
"""
|
|
|
|
|
Данные каждого тестового файла.
|
|
|
|
|
"""
|
2025-10-21 22:33:34 +03:00
|
|
|
file_data = test_file_path.read_text(encoding='utf-8-sig')
|
|
|
|
|
return file_data
|
|
|
|
|
|
2025-11-01 02:18:51 +03:00
|
|
|
@pytest.fixture()
|
|
|
|
|
def temp_src(tmp_path):
|
|
|
|
|
"""
|
2025-11-02 23:35:44 +03:00
|
|
|
Создаёт временную папку 'src' для каждого теста.
|
2025-11-01 02:18:51 +03:00
|
|
|
"""
|
|
|
|
|
return tmp_path / "src"
|
2025-11-02 23:35:44 +03:00
|
|
|
|
|
|
|
|
@pytest.fixture()
|
|
|
|
|
def temp_output_st(tmp_path):
|
|
|
|
|
"""
|
|
|
|
|
Создаёт временный файл для вывода каждого теста.
|
|
|
|
|
"""
|
|
|
|
|
return tmp_path / "output.st"
|