Files
fission-console/scripts/run_all.sh
T

114 lines
3.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# run_all.sh — запускает все тест-скрипты по очереди, выводит итог.
# Каждый скрипт независим и имеет собственный cleanup.
# При падении одного скрипта остальные продолжают выполняться.
#
# Запуск: bash run_all.sh
# Запуск одного: bash run_all.sh test_auth.sh
set -uo pipefail
ROOT_DIR=$(cd "$(dirname "$0")" && pwd)
# Авто-логирование: если stdout — терминал, пишем одновременно в файл
LOG_DIR="${ROOT_DIR}/../test-results"
mkdir -p "$LOG_DIR"
LOG_FILE="${LOG_DIR}/$(date +%Y-%m-%d_%H-%M-%S).log"
# Перезапуск с tee только если ещё не логируем (нет переменной _LOGGING)
if [ -z "${_LOGGING:-}" ]; then
export _LOGGING=1
exec bash "$0" "$@" 2>&1 | tee "$LOG_FILE"
exit $?
fi
echo "LOG: $LOG_FILE"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
TOTAL_PASS=0
TOTAL_FAIL=0
FAILED_SCRIPTS=()
run_script() {
local script="$1"
local name
name=$(basename "$script")
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo " ЗАПУСК: $name"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
local exit_code=0
bash "$script" || exit_code=$?
if [ "$exit_code" -eq 0 ]; then
echo -e "${GREEN}$name — PASSED${NC}"
TOTAL_PASS=$((TOTAL_PASS+1))
else
echo -e "${RED}$name — FAILED (exit $exit_code)${NC}"
TOTAL_FAIL=$((TOTAL_FAIL+1))
FAILED_SCRIPTS+=("$name")
fi
}
# Список скриптов в порядке выполнения
# (быстрые сначала, invoke/stress — последними)
SCRIPTS=(
"${ROOT_DIR}/test_auth.sh"
"${ROOT_DIR}/test_functions_crud.sh"
"${ROOT_DIR}/test_ttl.sh"
"${ROOT_DIR}/test_isolation.sh"
"${ROOT_DIR}/test_update.sh"
"${ROOT_DIR}/test_invoke.sh"
"${ROOT_DIR}/test_linters.sh"
"${ROOT_DIR}/test_stress.sh"
)
# Если передан аргумент — запускаем только его
if [ "$#" -ge 1 ]; then
SCRIPTS=("${ROOT_DIR}/$1")
fi
# Предварительная очистка тест-namespace-ов от прошлых прогонов.
# Запускается только если cleanup_test_namespaces.sh умеет wildcard.
PRE_CLEANUP="${ROOT_DIR}/pre_cleanup.sh"
if [ -x "$PRE_CLEANUP" ]; then
echo ""
echo ">>> Предварительная очистка тест-namespace-ов..."
KUBECTL_DIRECT=1 bash "$PRE_CLEANUP" 2>/dev/null || true
fi
echo ""
echo "╔══════════════════════════════════════╗"
echo "║ fission-console — полный тест-сьют ║"
echo "╚══════════════════════════════════════╝"
START_TIME=$(date +%s)
for script in "${SCRIPTS[@]}"; do
if [ ! -f "$script" ]; then
echo -e "${YELLOW} SKIP: $script не найден${NC}"
continue
fi
run_script "$script"
done
END_TIME=$(date +%s)
ELAPSED=$((END_TIME - START_TIME))
echo ""
echo "╔══════════════════════════════════════╗"
printf "║ Скриптов: PASS=%-3d FAIL=%-3d %3ds ║\n" "$TOTAL_PASS" "$TOTAL_FAIL" "$ELAPSED"
echo "╚══════════════════════════════════════╝"
if [ "${#FAILED_SCRIPTS[@]}" -gt 0 ]; then
echo ""
echo "Упавшие скрипты:"
for s in "${FAILED_SCRIPTS[@]}"; do
echo -e " ${RED}$s${NC}"
done
fi
[ "$TOTAL_FAIL" -eq 0 ]