File size: 1,334 Bytes
2276d59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
825affe
2276d59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/bash
# Sequential test runner for low-memory environments (Termux)
# Runs each test file in isolation, freeing memory between them.
# Usage: ./scripts/test-sequential.sh [pattern]

set -e

cd "$(dirname "$0")/.."

PATTERN="${1:-tests/core/*.test.ts tests/api/*.test.ts}"
PASS=0
FAIL=0
FAILED_FILES=()

# expand glob pattern
shopt -s nullglob
FILES=()
for pat in $PATTERN; do
  for file in $pat; do
    [ -f "$file" ] && FILES+=("$file")
  done
done

TOTAL=${#FILES[@]}
echo "Running $TOTAL test files sequentially..."
echo ""

for i in "${!FILES[@]}"; do
  FILE="${FILES[$i]}"
  IDX=$((i + 1))
  printf "[%d/%d] %s ... " "$IDX" "$TOTAL" "$FILE"

  if NODE_ENV=test NODE_OPTIONS='--import ./scripts/termux-shim.js --max-old-space-size=384' \
     npx vitest run "$FILE" --reporter=dot --no-coverage > /tmp/vitest-out.log 2>&1; then
    echo "PASS"
    PASS=$((PASS + 1))
  else
    echo "FAIL"
    FAIL=$((FAIL + 1))
    FAILED_FILES+=("$FILE")
    tail -20 /tmp/vitest-out.log
  fi

  # let the OS reclaim memory between runs
  sleep 1
done

echo ""
echo "=========================================="
echo "Total: $TOTAL | Passed: $PASS | Failed: $FAIL"
echo "=========================================="

if [ ${#FAILED_FILES[@]} -gt 0 ]; then
  echo ""
  echo "Failed files:"
  printf '  %s\n' "${FAILED_FILES[@]}"
  exit 1
fi