61 lines
2.6 KiB
Bash
Executable File
61 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Цвета для вывода
|
||
GREEN='\033[0;32m'
|
||
RED='\033[0;31m'
|
||
YELLOW='\033[0;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Используем -e для интерпретации escape-последовательностей
|
||
echo -e "${YELLOW}===== Запуск тестов в Docker =====${NC}"
|
||
|
||
# Проверка существования директории для отчетов о покрытии
|
||
if [ ! -d "./coverage" ]; then
|
||
mkdir -p ./coverage
|
||
echo -e "Создана директория ./coverage для хранения отчетов о покрытии тестами"
|
||
fi
|
||
|
||
# Проверка запущен ли MongoDB, если нет - запускаем
|
||
if ! docker ps | grep -q mongodb; then
|
||
echo -e "${YELLOW}MongoDB не запущена, запускаем контейнер...${NC}"
|
||
docker compose up -d mongo
|
||
|
||
# Даем больше времени на запуск MongoDB
|
||
echo -e "Ожидаем запуск MongoDB..."
|
||
sleep 10
|
||
echo -e "Проверяем готовность MongoDB..."
|
||
# Попытка подключения к MongoDB для проверки её готовности
|
||
docker exec mongodb mongosh --quiet --eval "db.stats()"
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}MongoDB успешно запущена и готова к работе${NC}"
|
||
else
|
||
echo -e "${YELLOW}Ожидаем дополнительное время для полной инициализации MongoDB...${NC}"
|
||
sleep 5
|
||
fi
|
||
fi
|
||
|
||
# Запускаем тесты в Docker
|
||
echo -e "${YELLOW}Запускаем контейнер с тестами...${NC}"
|
||
docker compose up --build tests
|
||
|
||
# Получаем код выхода контейнера с тестами
|
||
exit_code=$(docker inspect -f '{{.State.ExitCode}}' wish-list-api-tests)
|
||
|
||
# Останавливаем контейнер с тестами
|
||
docker compose stop tests
|
||
|
||
if [ $exit_code -eq 0 ]; then
|
||
echo -e "${GREEN}✓ Все тесты успешно пройдены${NC}"
|
||
echo -e "${YELLOW}Отчеты о покрытии тестами сохранены в директории ./coverage${NC}"
|
||
else
|
||
echo -e "${RED}✗ Некоторые тесты содержат ошибки (код выхода: $exit_code)${NC}"
|
||
fi
|
||
|
||
# Спрашиваем пользователя, хочет ли он остановить MongoDB
|
||
read -p "Остановить MongoDB? (y/n): " stop_mongo
|
||
if [ "$stop_mongo" = "y" ] || [ "$stop_mongo" = "Y" ]; then
|
||
docker compose stop mongo
|
||
echo -e "MongoDB остановлена"
|
||
fi
|
||
|
||
exit $exit_code |