# Pre-commit Hook для тестирования ## 📋 Описание Pre-commit хук автоматически запускает все тесты перед каждым коммитом, чтобы гарантировать качество кода. ## 🚀 Как это работает При выполнении `git commit` хук: 1. **Автоматически запускает все тесты** в директории `examples/` 2. **Показывает статистику** прохождения тестов 3. **Разрешает коммит** только если все тесты прошли успешно 4. **Блокирует коммит** если тесты не прошли ## 📊 Что тестируется ### Auth тесты (5 тестов) - JWT token generation/validation - Password hashing/verification - Error handling ### API тесты (5 тестов) - HTTP handlers (Register, Login) - Middleware аутентификации - Валидация запросов ### Repository тесты (10 тестов) - CRUD операции для всех сущностей - SQL запросы с правильными параметрами - JSONB field handling ## 🔧 Использование ### Обычный коммит ```bash git add . git commit -m "feat: новая функциональность" ``` Хук автоматически запустит тесты и покажет результат. ### Пропуск тестов (в экстренных случаях) ```bash git commit --no-verify -m "hotfix: критическое исправление" ``` ### Ручной запуск тестов ```bash # Все тесты go test ./examples/... -v # Отдельные модули go test ./examples/auth_test.go -v go test ./examples/api_test.go -v go test ./examples/repository_test.go -v ``` ## 📁 Расположение хука Хук находится в: `.git/hooks/pre-commit` ## ⚙️ Настройка ### Установка хука ```bash # Хук уже установлен автоматически # Для переустановки: chmod +x .git/hooks/pre-commit ``` ### Отключение хука ```bash mv .git/hooks/pre-commit .git/hooks/pre-commit.disabled ``` ### Включение хука ```bash mv .git/hooks/pre-commit.disabled .git/hooks/pre-commit chmod +x .git/hooks/pre-commit ``` ## 🎯 Преимущества 1. **Автоматическое тестирование** - не нужно помнить о запуске тестов 2. **Качество кода** - коммиты с ошибками не попадают в репозиторий 3. **Статистика** - видно покрытие тестами 4. **Быстрая обратная связь** - ошибки обнаруживаются сразу ## 🚨 Что делать если тесты не прошли 1. **Исправить ошибки** в коде 2. **Запустить тесты вручную** для диагностики: ```bash go test ./examples/... -v ``` 3. **Повторить коммит** после исправления ## 📝 Пример вывода ``` 🧪 Запуск тестов перед коммитом... 📋 Запуск всех тестов... === RUN TestAuthHandler_Register --- PASS: TestAuthHandler_Register (0.00s) ... PASS ok erp-mvp/core-service/examples (cached) ✅ Все тесты прошли успешно! 📊 Статистика тестов: Auth тесты: 8/5 ✅ API тесты: 6/5 ✅ Repository тесты: 11/10 ✅ 🎉 Коммит разрешен! [feature/core-service-api-structure 508b57b] feat: новая функциональность ```