Тестирование
Быстрый старт
Заголовок раздела «Быстрый старт»uv run pytest provider/tests/ -vС отчётом о покрытии:
uv run pytest provider/tests/ -v --cov=provider/ --cov-report=term-missingCI-пайплайн
Заголовок раздела «CI-пайплайн»Каждый push и PR запускают два параллельных задания через test.yml:
| Задание | Что делает |
|---|---|
test-* | Запускает pytest с проверкой покрытия, загружает отчёт в Codecov |
lint-* | Запускает ruff, mypy, codespell, pre-commit |
Тесты запускаются на основе music-assistant/server@dev (без форка — лёгкий CI).
Инструменты
Заголовок раздела «Инструменты»| Инструмент | Назначение |
|---|---|
uv | Управление виртуальным окружением и зависимостями |
Python 3.12 | Целевая версия языка |
pytest | Фреймворк для тестов |
pytest-cov | Сбор данных о покрытии |
Codecov | Загрузка отчётов о покрытии (автоматически в CI) |
ruff | Линтер и форматтер Python |
mypy | Статический анализ типов |
codespell | Проверка орфографии в исходном коде |
pre-commit | Хуки для проверки перед коммитом |
Запуск линтеров локально
Заголовок раздела «Запуск линтеров локально»Запустить все хуки pre-commit (рекомендуется перед PR):
uv run pre-commit run --all-filesТолько проверка типов:
uv run mypy provider/Только линтинг:
uv run ruff check provider/uv run ruff format --check provider/Покрытие
Заголовок раздела «Покрытие»Отчёты о покрытии автоматически загружаются в Codecov при каждом push в CI. Локально просмотреть покрытие:
uv run pytest provider/tests/ --cov=provider/ --cov-report=htmlopen htmlcov/index.htmlЕсли CI упал
Заголовок раздела «Если CI упал»Если тесты или линтеры упали в CI, автоматически создаётся GitHub-задача с меткой incident:ci.
Подробнее о процессе работы с инцидентами: Управление инцидентами.