148 lines
5.4 KiB
Bash
148 lines
5.4 KiB
Bash
#!/usr/bin/env bash
|
|
# ──────────────────────────────────────────────────────────────────────
|
|
# run_all_tests.sh — Run flutter test for all testable packages and apps
|
|
#
|
|
# Usage:
|
|
# ./tools/run_all_tests.sh # Run from kell_creations_apps/
|
|
# ./tools/run_all_tests.sh --analyze # Also run dart analyze first
|
|
#
|
|
# Exit codes:
|
|
# 0 — all tests passed (and analyze clean, if requested)
|
|
# 1 — one or more failures
|
|
# ──────────────────────────────────────────────────────────────────────
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
|
# Packages/apps with tests (add new ones here as they gain tests)
|
|
TESTABLE=(
|
|
packages/core
|
|
packages/design_system
|
|
packages/feature_wordpress
|
|
apps/kell_web
|
|
)
|
|
|
|
# All packages/apps to analyze (includes those without tests)
|
|
ANALYZABLE=(
|
|
packages/core
|
|
packages/design_system
|
|
packages/feature_wordpress
|
|
packages/feature_inventory
|
|
packages/feature_orders
|
|
packages/feature_policy
|
|
apps/kell_web
|
|
apps/kell_mobile
|
|
)
|
|
|
|
RUN_ANALYZE=false
|
|
if [[ "${1:-}" == "--analyze" ]]; then
|
|
RUN_ANALYZE=true
|
|
fi
|
|
|
|
OVERALL_EXIT=0
|
|
|
|
# ── Dependency install ───────────────────────────────────────────────
|
|
echo ""
|
|
echo "══════════════════════════════════════"
|
|
echo " Installing dependencies"
|
|
echo "══════════════════════════════════════"
|
|
|
|
for pkg in "${ANALYZABLE[@]}"; do
|
|
echo " → $pkg"
|
|
(cd "$ROOT_DIR/$pkg" && flutter pub get --no-example) > /dev/null 2>&1
|
|
done
|
|
|
|
# ── Analyze (optional) ──────────────────────────────────────────────
|
|
if $RUN_ANALYZE; then
|
|
echo ""
|
|
echo "══════════════════════════════════════"
|
|
echo " Running dart analyze"
|
|
echo "══════════════════════════════════════"
|
|
|
|
ANALYZE_FAILURES=()
|
|
for pkg in "${ANALYZABLE[@]}"; do
|
|
NAME=$(basename "$pkg")
|
|
printf " %-25s" "$NAME"
|
|
if (cd "$ROOT_DIR/$pkg" && dart analyze --fatal-infos) > /dev/null 2>&1; then
|
|
echo "✅ clean"
|
|
else
|
|
echo "❌ issues found"
|
|
ANALYZE_FAILURES+=("$NAME")
|
|
OVERALL_EXIT=1
|
|
fi
|
|
done
|
|
|
|
if [ ${#ANALYZE_FAILURES[@]} -gt 0 ]; then
|
|
echo ""
|
|
echo " ❌ Analyze failures: ${ANALYZE_FAILURES[*]}"
|
|
else
|
|
echo ""
|
|
echo " ✅ All packages analyze clean"
|
|
fi
|
|
fi
|
|
|
|
# ── Tests ────────────────────────────────────────────────────────────
|
|
echo ""
|
|
echo "══════════════════════════════════════"
|
|
echo " Running flutter test"
|
|
echo "══════════════════════════════════════"
|
|
|
|
declare -A RESULTS_PASS
|
|
declare -A RESULTS_FAIL
|
|
TEST_FAILURES=()
|
|
|
|
for pkg in "${TESTABLE[@]}"; do
|
|
NAME=$(basename "$pkg")
|
|
echo ""
|
|
echo " ── $NAME ──"
|
|
|
|
TMPFILE=$(mktemp)
|
|
if (cd "$ROOT_DIR/$pkg" && flutter test --reporter expanded 2>&1) | tee "$TMPFILE"; then
|
|
: # tests passed
|
|
else
|
|
TEST_FAILURES+=("$NAME")
|
|
OVERALL_EXIT=1
|
|
fi
|
|
|
|
PASS=$(grep -cE '^\s*✓' "$TMPFILE" 2>/dev/null || echo "0")
|
|
FAIL=$(grep -cE '^\s*✗' "$TMPFILE" 2>/dev/null || echo "0")
|
|
RESULTS_PASS[$NAME]=$PASS
|
|
RESULTS_FAIL[$NAME]=$FAIL
|
|
rm -f "$TMPFILE"
|
|
done
|
|
|
|
# ── Summary ──────────────────────────────────────────────────────────
|
|
echo ""
|
|
echo "╔══════════════════════════════════════╗"
|
|
echo "║ Flutter Test Results Summary ║"
|
|
echo "╠══════════════════════════════════════╣"
|
|
echo "║ Package Pass Fail ║"
|
|
echo "╠══════════════════════════════════════╣"
|
|
|
|
TOTAL_PASS=0
|
|
TOTAL_FAIL=0
|
|
|
|
for pkg in "${TESTABLE[@]}"; do
|
|
NAME=$(basename "$pkg")
|
|
P=${RESULTS_PASS[$NAME]:-0}
|
|
F=${RESULTS_FAIL[$NAME]:-0}
|
|
printf "║ %-20s %-7s %-7s ║\n" "$NAME" "$P" "$F"
|
|
TOTAL_PASS=$((TOTAL_PASS + P))
|
|
TOTAL_FAIL=$((TOTAL_FAIL + F))
|
|
done
|
|
|
|
echo "╠══════════════════════════════════════╣"
|
|
printf "║ %-20s %-7s %-7s ║\n" "TOTAL" "$TOTAL_PASS" "$TOTAL_FAIL"
|
|
echo "╚══════════════════════════════════════╝"
|
|
|
|
if [ $OVERALL_EXIT -ne 0 ]; then
|
|
echo ""
|
|
echo "❌ Failures detected. See details above."
|
|
else
|
|
echo ""
|
|
echo "✅ All $TOTAL_PASS tests passed across all packages."
|
|
fi
|
|
|
|
exit $OVERALL_EXIT
|