Files
hakorune/tools/test/lib/shlib.sh

49 lines
1.5 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
# Common helpers for tools/test
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../../.." && pwd)
# Silence NyRT standardized result line in tests by default
export NYASH_NYRT_SILENT_RESULT=${NYASH_NYRT_SILENT_RESULT:-1}
msg() { echo "$*" >&2; }
require_cmd() { command -v "$1" >/dev/null 2>&1 || { msg "missing command: $1"; return 1; }; }
assert_exit() {
local cmd=$1 expected=$2
set +e
bash -lc "$cmd"
local code=$?
set -e
if [[ "$code" -ne "$expected" ]]; then
msg "assert_exit failed: expected=$expected got=$code cmd=$cmd"
return 1
fi
}
assert_grep() {
local pattern=$1; shift
local text
text=$(cat)
echo "$text" | rg -q "$pattern" || { msg "assert_grep failed: pattern '$pattern'\n$text"; return 1; }
}
build_nyash_release() { (cd "$ROOT_DIR" && cargo build --release -j 8 >/dev/null); }
build_ny_llvmc() { (cd "$ROOT_DIR" && cargo build --release -p nyash-llvm-compiler -j 8 >/dev/null); }
build_nyrt() { (cd "$ROOT_DIR/crates/nyrt" && cargo build --release -j 8 >/dev/null); }
emit_json() { # args: src out_json
"$ROOT_DIR/target/release/nyash" --emit-mir-json "$2" --backend mir "$1" >/dev/null
}
run_pyvm_json() { # args: json_path
require_cmd python3
python3 "$ROOT_DIR/tools/pyvm_runner.py" --in "$1"
}
build_exe_crate() { # args: in_json out_exe
"$ROOT_DIR/target/release/ny-llvmc" --in "$1" --emit exe --nyrt "$ROOT_DIR/target/release" --out "$2" --harness "$ROOT_DIR/tools/llvmlite_harness.py"
}