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

2.6 KiB
Raw Blame History

name description
run-tests Используй этот навык, когда пользователь просит запустить тесты, проверить работоспособность кода, исправить ошибки после правок или запустить 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:

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. Повторяй цикл, пока тест не пройдет успешно.