Files
hcie-rust-v3.05/run_all_tests.sh
T

175 lines
6.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# ============================================================
# HCIE-Rust v3.05 — Bulk All-Tests Execution Script (bash)
# Usage: bash run_all_tests.sh [--no-io] [--no-4k] [--ignored]
#
# Flags:
# --no-io Skip hcie-io tests (slow, needs PSD fixtures)
# --no-4k Skip the 4K performance benchmark
# --ignored Also run #[ignore] tests (visual checks, benchmarks)
# ============================================================
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$ROOT_DIR"
PASS=0
FAIL=0
SKIP=0
FAILED_CRATES=()
SKIPPED_CRATES=()
START_TIME=$(date +%s)
SKIP_IO=false
SKIP_4K=false
INCLUDE_IGNORED=false
CARGO_ARGS=()
TEST_ARGS=()
PARSING_TEST_ARGS=false
for arg in "$@"; do
if [ "$PARSING_TEST_ARGS" = true ]; then
TEST_ARGS+=("$arg")
continue
fi
case "$arg" in
--no-io) SKIP_IO=true ;;
--no-4k) SKIP_4K=true ;;
--ignored) INCLUDE_IGNORED=true ;;
--) PARSING_TEST_ARGS=true ;;
*) CARGO_ARGS+=("$arg") ;;
esac
done
SEPARATOR() { printf '%*s\n' 80 '' | tr ' ' '='; }
run_crate() {
local crate="$1"
local label="$2"
shift 2
local -a crate_test_args=("$@")
local -a cmd=(cargo test -p "$crate" "${CARGO_ARGS[@]}")
if (( ${#crate_test_args[@]} > 0 || ${#TEST_ARGS[@]} > 0 )); then
cmd+=(-- "${crate_test_args[@]}" "${TEST_ARGS[@]}")
fi
SEPARATOR
printf '[%s] Running:' "$label"
printf ' %q' "${cmd[@]}"
printf '\n'
SEPARATOR
if "${cmd[@]}" 2>&1; then
PASS=$((PASS + 1))
else
FAIL=$((FAIL + 1))
FAILED_CRATES+=("$crate")
fi
}
run_ignored_tests() {
local crate="$1"
local -a cmd=(cargo test -p "$crate" "${CARGO_ARGS[@]}" -- --ignored "${TEST_ARGS[@]}")
if "${cmd[@]}" 2>&1; then
PASS=$((PASS + 1))
else
FAIL=$((FAIL + 1))
FAILED_CRATES+=("${crate}[ignored]")
fi
}
display_summary() {
local elapsed=$(( $(date +%s) - START_TIME ))
echo ""
SEPARATOR
echo " BULK TEST EXECUTION COMPLETE"
echo " Test runs passed: $PASS"
echo " Test runs failed: $FAIL"
echo " Crates skipped: $SKIP"
if (( ${#FAILED_CRATES[@]} > 0 )); then
echo " Failed crates: ${FAILED_CRATES[*]}"
fi
if (( ${#SKIPPED_CRATES[@]} > 0 )); then
echo " Skipped crates: ${SKIPPED_CRATES[*]}"
fi
echo " Elapsed time: ${elapsed}s"
SEPARATOR
[ "$FAIL" -eq 0 ] && echo " ALL CRATES PASSED" || echo " $FAIL crate(s) have failing tests"
exit "$FAIL"
}
# ──────────────────────────────────────────────────────────
# Layer 1: DATA
# ──────────────────────────────────────────────────────────
run_crate "hcie-protocol" "Layer 1"
run_crate "hcie-color" "Layer 1"
# ──────────────────────────────────────────────────────────
# Layer 2: ENGINE CORE
# ──────────────────────────────────────────────────────────
run_crate "hcie-blend" "Layer 2"
run_crate "hcie-brush-engine" "Layer 2"
run_crate "hcie-draw" "Layer 2"
run_crate "hcie-composite" "Layer 2"
run_crate "hcie-filter" "Layer 2"
run_crate "hcie-selection" "Layer 2"
run_crate "hcie-vector" "Layer 2"
run_crate "hcie-history" "Layer 2"
if [ "$SKIP_IO" = true ]; then
echo "[SKIP] hcie-io (--no-io flag)"
SKIP=$((SKIP + 1))
SKIPPED_CRATES+=("hcie-io")
else
run_crate "hcie-io" "Layer 2"
fi
run_crate "psd" "Layer 2"
run_crate "hcie-vision" "Layer 2"
run_crate "hcie-build-info" "Layer 2"
# ──────────────────────────────────────────────────────────
# Layer 4: ENGINE API
# ──────────────────────────────────────────────────────────
if [ "$SKIP_4K" = true ]; then
run_crate "hcie-engine-api" "Layer 4" --skip benchmark_4k_stroke_on_multilayer_document
else
run_crate "hcie-engine-api" "Layer 4"
fi
# ──────────────────────────────────────────────────────────
# Layer 6: GUI — egui
# ──────────────────────────────────────────────────────────
run_crate "hcie-gui-egui" "Layer 6"
# ──────────────────────────────────────────────────────────
# Layer 6: GUI — iced
# ──────────────────────────────────────────────────────────
run_crate "hcie-iced-gui" "Layer 6"
# ──────────────────────────────────────────────────────────
# Brush Catalogs
# ──────────────────────────────────────────────────────────
run_crate "hcie-dry-media-brushes" "Brushes"
run_crate "hcie-paint-brushes" "Brushes"
run_crate "hcie-digital-brushes" "Brushes"
run_crate "hcie-watercolor-brushes" "Brushes"
run_crate "hcie-ink-brushes" "Brushes"
# ──────────────────────────────────────────────────────────
# Ignored tests (visual checks, benchmarks)
# ──────────────────────────────────────────────────────────
if [ "$INCLUDE_IGNORED" = true ]; then
echo ""
SEPARATOR
echo "Running IGNORED tests (visual checks, benchmarks)"
SEPARATOR
run_ignored_tests hcie-engine-api
run_ignored_tests hcie-brush-engine
run_ignored_tests hcie-iced-gui
run_ignored_tests hcie-fx
fi
display_summary