opencode-config/.opencode/skills/run-tests/SKILL.md
Sergey a8f9aa0bc6
feat: migrate .opencode/ config from opencode (#23)
* feat: migrate .opencode/ config from opencode

* refactor: rename repo refs and sanitize for public

* docs(handoff): add pr-7 handoff + ADR-002

* docs(handoff): fix PR number

* docs: update project map with .opencode/ structure

---------

Co-authored-by: opencode-agent <agent@slaid098.dev>
2026-07-23 22:57:39 +03:00

43 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: run-tests
description: Используй этот навык, когда пользователь просит запустить тесты, проверить работоспособность кода, исправить ошибки после правок или запустить pytest.
---
# Навык запуска тестов и исправления ошибок через Pytest
Когда активирован этот навык, следуй строгому алгоритму работы с тестами.
## 1. Команда запуска
Всегда запускай тесты только через менеджер пакетов `uv`:
`uv run pytest`
## 2. Локальный запуск (оптимизация времени)
Если ты правишь конкретный файл, не запускай весь тестовый люкс сразу. Запусти только связанные тесты, чтобы сэкономить время:
`uv run pytest tests/path_to_test_file.py`
## 3. Временные зависимости (НЕ менять pyproject.toml!)
Если для запуска тестов нужны дополнительные пакеты (pydantic, pyyaml, loguru, pillow, dotenv и т.д.) — используй `uv run --with`:
```bash
uv run --with pytest --with pydantic --with pyyaml --with loguru --with pillow --with python-dotenv pytest tests/... -v
```
**Запрещено:** `uv add <package>` — это меняет `pyproject.toml` и `uv.lock` и создаёт лишний коммит.
**Разрешено:** `uv run --with ...` — зависимости ставятся временно, конфиги не трогаются.
## 4. Конвенции проекта (asyncio_mode = "auto")
В `pyproject.toml` настроено `asyncio_mode = "auto"`.
- `pytest-asyncio` автоматически распознаёт асинхронные тест-функции.
- **Не пиши `@pytest.mark.asyncio` вручную** — он не нужен и считается избыточным.
## 5. Алгоритм исправления ошибок (TDD-like):
1. Запусти тесты и дождись вывода.
2. Если тесты упали, проанализируй traceback ошибки.
3. Исправь код или сам тест (если тест устарел).
4. Запусти упавший тест повторно через `uv run pytest tests/path_to_test_file.py::test_name`.
5. Повторяй цикл, пока тест не пройдет успешно.