wishli-api/scripts/run_tests.sh
2025-03-23 20:05:51 +03:00

77 lines
2.8 KiB
Bash
Executable File
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.

#!/bin/sh
# Цвета для вывода
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
echo -e "${YELLOW}===== Запуск всех тестов =====${NC}"
# Создаем директорию для отчетов о покрытии, если ее нет
mkdir -p ./coverage
# Функция для выполнения и отчета о результатах тестов
run_tests() {
test_type=$1
test_path=$2
echo -e "${YELLOW}===== Запуск $test_type тестов =====${NC}"
# Запускаем тесты с генерацией отчета о покрытии
if go test -v -coverprofile=./coverage/coverage_$test_type.out $test_path; then
echo -e "${GREEN}$test_type тесты успешно пройдены${NC}"
# Генерация HTML-отчета о покрытии
go tool cover -html=./coverage/coverage_$test_type.out -o ./coverage/coverage_$test_type.html
return 0
else
echo -e "${RED}$test_type тесты содержат ошибки${NC}"
return 1
fi
}
# Запускаем unit-тесты
run_tests "unit" "./tests/unit/..."
UNIT_RESULT=$?
# Функция для проверки доступности MongoDB
check_mongodb() {
# В Docker контейнере MongoDB доступен по имени хоста 'mongo'
if [ -n "$MONGODB_URI" ]; then
# Если задана переменная окружения MONGODB_URI, считаем что MongoDB доступен
return 0
else
# Проверяем доступность MongoDB
if nc -z mongo 27017 2>/dev/null; then
return 0
elif nc -z localhost 27017 2>/dev/null; then
return 0
else
return 1
fi
fi
}
# Если настроена переменная окружения для запуска интеграционных тестов
if [ "$RUN_INTEGRATION_TESTS" = "true" ]; then
# Запускаем интеграционные тесты, если MongoDB доступна
if check_mongodb; then
run_tests "integration" "./tests/integration/..."
INTEGRATION_RESULT=$?
else
echo -e "${YELLOW}MongoDB не доступна, интеграционные тесты пропущены${NC}"
INTEGRATION_RESULT=0
fi
else
echo -e "${YELLOW}Интеграционные тесты пропущены (RUN_INTEGRATION_TESTS не установлена)${NC}"
INTEGRATION_RESULT=0
fi
# Проверяем общий результат
if [ $UNIT_RESULT -eq 0 ] && [ $INTEGRATION_RESULT -eq 0 ]; then
echo -e "${GREEN}Все тесты успешно пройдены${NC}"
exit 0
else
echo -e "${RED}✗ Некоторые тесты содержат ошибки${NC}"
exit 1
fi