Files
Mini-ERP-app/core-service/PRE-COMMIT-HOOK.md
Andrey Epifantsev b19f6df20c feat: добавлен pre-commit хук для автоматического тестирования
- Создан pre-commit хук в .git/hooks/pre-commit
- Хук автоматически запускает все тесты перед коммитом
- Показывает статистику прохождения тестов
- Блокирует коммит если тесты не прошли
- Добавлена документация PRE-COMMIT-HOOK.md

Хук тестирует:
- Auth тесты (5 тестов)
- API тесты (5 тестов)
- Repository тесты (10 тестов)

Использование:
- Обычный коммит: git commit -m 'message'
- Пропуск тестов: git commit --no-verify -m 'message'
2025-08-27 15:55:52 +04:00

119 lines
3.7 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.

# 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: новая функциональность
```