run.sh raw
1 #!/bin/bash
2 # Regression test runner: compiles each should_compile test and runs the binary.
3 set -euo pipefail
4
5 SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
6 ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
7 source "$SCRIPT_DIR/../util.sh"
8
9 echo ""
10 echo "=== Phase 0: Regressions ==="
11
12 for f in "$SCRIPT_DIR/should_compile/"*.mx; do
13 [ -f "$f" ] || continue
14 name="regression:$(basename "$f" .mx)"
15 td="$(tempdir "reg_$(basename "$f" .mx)")"
16 rm -rf "$td"; mkdir -p "$td"
17 if compile_and_run "$f" "$td" "testbin"; then
18 log_pass "$name" "ok"
19 else
20 tail -5 "$td/build.log" 2>/dev/null > "$td/err.txt"
21 log_fail "$name" "$(cat "$td/err.txt" 2>/dev/null || echo 'crash')"
22 fi
23 rm -rf "$td"
24 done
25
26 for d in "$SCRIPT_DIR/should_compile/"*/; do
27 [ -d "$d" ] || continue
28 [ -f "$d/main.mx" ] || continue
29 name="regression:$(basename "$d")"
30 td="$(tempdir "reg_$(basename "$d")")"
31 rm -rf "$td"; mkdir -p "$td"
32
33 lib_dir="$d/lib"
34 if [ -d "$lib_dir" ] && [ -f "$lib_dir/lib.mx" ]; then
35 MOXIEROOT="$ROOT" "$MOXIE" build -o /dev/null "$lib_dir" >"$td/lib_build.log" 2>&1 || true
36 fi
37
38 if compile_and_run "$d" "$td" "testbin"; then
39 log_pass "$name" "ok"
40 else
41 tail -5 "$td/build.log" 2>/dev/null > "$td/err.txt"
42 log_fail "$name" "$(cat "$td/err.txt" 2>/dev/null || echo 'crash')"
43 fi
44 rm -rf "$td"
45 done
46
47 failed=0
48 if [ -f "$STATUSFILE" ]; then
49 failed=$(grep -c FAIL "$STATUSFILE" 2>/dev/null) || failed=0
50 fi
51 if [ "$failed" -gt 0 ]; then
52 echo ""
53 echo "Regression suite: $failed failure(s)"
54 exit 1
55 fi
56