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