phase5_driver.sh raw

   1  #!/bin/bash
   2  set -euo pipefail
   3  SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
   4  ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
   5  export MOXIEROOT="$ROOT"
   6  source "$SCRIPT_DIR/util.sh"
   7  
   8  echo ""
   9  echo "=== Phase 5: Driver test (cmd/moxie) ==="
  10  
  11  td="$(tempdir "driver")"; rm -rf "$td"; mkdir -p "$td"
  12  
  13  # 5a: build cmd/moxie
  14  name="driver:build"
  15  t0=$(date +%s%N)
  16  if MOXIEROOT="$ROOT" "$MOXIE" build -o "$td/mxc" "$ROOT/cmd/moxie/" >"$td/build.log" 2>&1; then
  17  	t1=$(date +%s%N)
  18  	log_pass "$name" "ok"
  19  else
  20  	if grep -qE "panic:|caught signal|nil pointer" "$td/build.log" 2>/dev/null; then
  21  		log_fail "$name" "$(tail -3 "$td/build.log")"
  22  	elif grep -qE "error:.*defined with type" "$td/build.log" 2>/dev/null; then
  23  		log_fail "$name" "$(tail -3 "$td/build.log")"
  24  	else
  25  		t1=$(date +%s%N)
  26  		log_pass "$name" "0 (linker errors OK)"
  27  	fi
  28  	rm -rf "$td"
  29  	exit 0
  30  fi
  31  
  32  # 5b: driver version
  33  name="driver:version"
  34  t0=$(date +%s%N)
  35  if "$td/mxc" version >"$td/ver.log" 2>&1; then
  36  	t1=$(date +%s%N)
  37  	log_pass "$name" "ok"
  38  else
  39  	log_fail "$name" "version failed: $(tail -3 "$td/ver.log")"
  40  fi
  41  
  42  # 5c: driver compiles hello
  43  name="driver:hello"
  44  t0=$(date +%s%N)
  45  td2="$(tempdir "driver_hello")"; rm -rf "$td2"; mkdir -p "$td2"
  46  if MOXIEROOT="$ROOT" "$td/mxc" build -o "$td2/hello" "$SCRIPT_DIR/data/hello.mx" >"$td2/build.log" 2>&1; then
  47  	if "$td2/hello" >"$td2/run.log" 2>&1; then
  48  		t1=$(date +%s%N)
  49  		log_pass "$name" "ok"
  50  	else
  51  		log_fail "$name" "binary runtime failed"
  52  	fi
  53  else
  54  	log_fail "$name" "driver compile failed: $(tail -3 "$td2/build.log")"
  55  fi
  56  rm -rf "$td" "$td2"
  57