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