Skip to content

Bump version to 1.4.0. Added tests coverage and CI/CD#10

Merged
proDreams merged 9 commits intomainfrom
dev
Oct 9, 2025
Merged

Bump version to 1.4.0. Added tests coverage and CI/CD#10
proDreams merged 9 commits intomainfrom
dev

Conversation

@proDreams
Copy link
Owner

No description provided.

fix: changed NotImplementedError to UnknownGitProviderException in ReviewResponseDTO
fix: changed NotImplementedError to UnknownGitProviderException in ReviewResponseDTO
fix: yandexgpt_adapter.py not awaited call
test: many tests
test: minimal coverage in pyproject.toml raised to 85%
test: minimal coverage in pyproject.toml raised to 90%
test: tests for http_client_gateway.py
@revu-agent
Copy link
Collaborator

  1. CI/CD workflows (.github/workflows/build.yaml и lint.yaml):

    • Добавлены новые jobs для запуска тестов, включая кэширование uv и pre-commit для ускорения.
    • После успешного тестирования запускается build-and-push.
    • Использование telegram-уведомлений присутствует во всех workflow, что хорошо.
    • В build.yaml есть неиспользуемые переменные окружения UV_CACHE_DIR, CACHE_DIR, PRE_COMMIT_HOME — они объявлены, но не используются явно.
    • В lint.yaml job test зависит от lint, что логично.
    • Удален старый .gitverse/workflows/build.yaml — это улучшение структуры и централизованное управление workflow.
    • В целом настройки CI выглядят современными и хорошо организованными.
  2. pyproject.toml:

    • Обновлён номер версии с 1.3.0 на 1.4.0.
    • Добавлены секции optional-dependencies для pytest с конкретными версиями.
    • Добавлена конфигурация pytest (coverage, strictness, пути, маркеры).
    • Все настройки выглядят аккуратно, соответствуют PEP-621/PEP-518.
  3. src/revu/domain/entities/dto/ai_provider_dto.py:

    • В методе from_request заменен raise NotImplementedError на кастомное исключение UnknownGitProviderException с понятным сообщением.
    • Это улучшает читаемость и поддержку.
  4. Добавлен новый файл с исключением UnknownGitProviderException:

    • Это правильное оформление, кастомные исключения улучшают обработку ошибок.
  5. src/revu/domain/protocols/git_provider_protocol.py:

    • Добавлены docstring-описания для методов send_comment и send_inline (хотя без описания параметров, просто placeholders).
    • Лучше, чем пустой pass, но можно подробнее описать.
  6. Исправления в async вызовах методов SDK в gigachat_adapter.py и yandexgpt_adapter.py:

    • В gigachat клиент chat() теперь вызывается с await — исправленная ошибка.
    • В yandexgpt client models.completions теперь await для корректного получения модели.
    • Эти исправления обязательны для корректной работы.
  7. src/revu/infrastructure/http_client/http_client_gateway.py:

    • Улучшено логирование ошибки для не-JSON ответов (перешёл на f-строку).
    • Добавлено сообщение с последней ошибкой в исключение HTTPGatewayAttemptLimitExceeded.
    • Это улучшает диагностику.
  8. src/revu/presentation/webhooks/schemas/github_schemas.py:

    • Использован Pydantic Annotated с ограничением длины SHA-1 (40 символов) — это хорошее улучшение валидации.
    • Импорт StringConstraints похоже является пользовательским или из pydantic, корректно.
  9. src/revu/runner.py:

    • Обновлен docstring функции run() для ясности, хотя формат немного странный (отступы, переносы).
    • Лучше выровнять docstring по PEP-257.
  10. Тесты:

    • Большое покрытие тестами в разных слоях: domain, infrastructure (AI providers, git providers, http client), presentation (schemas, validators, di).
    • Используются mock, AsyncMock, правильные проверки исключений.
    • Есть фикстуры и моковые данные.
    • Тесты читаемые, покрывают основные кейсы, включая позитивные и негативные.
  11. Безопасность:

    • Проверка подписей webhook (HMAC SHA256) реализована и покрыта тестами.
    • Использование секретов через GitHub Secrets — правильно.
    • Нет использования eval/exec для данных пользователя.
    • Ошибок безопасности не обнаружено.
  12. Производительность и стиль:

    • Используется кэширование для uv и pre-commit в CI.
    • Качество кода на хорошем уровне, переменные, функции имеют понятные имена.
    • Нет явных дублирований.
    • PEP8 соблюдается, имена аннотированы.
    • Асинхронный код исправлен для корректной работы.

Итого:

✅ Код качественный, с хорошей структурой, настроен CI с тестами и кэшированием.
✅ Ошибки асинхронности исправлены.
✅ Добавлены расширенные тесты и обработка ошибок.
✅ Добавлена строгая валидация данных и кастомные исключения.
✅ Безопасность вебхуков и секретов покрыта и протестирована.

Рекомендации:

  • Немного улучшить описание docstring в runner.py.
  • Проверить наличие лишних объявленных, но не используемых env переменных в CI (не критично).
  • Docstring в git_provider_protocol.py желательно дополнить параметрами.

В целом принято, замечаний по качеству, безопасности и тестам нет.

@proDreams proDreams merged commit 620832f into main Oct 9, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants