#!/bin/sh set -eu fixture=$1 hax=$2 state_dir=$(mktemp -d "${TMPDIR:-/tmp}/gem-hax-native.XXXXXX") port_file=$state_dir/port error_file=$state_dir/server.err output_file=$state_dir/hax.out cleanup() { if [ -n "${server_pid:-}" ]; then kill "$server_pid" 2>/dev/null || true wait "$server_pid" 2>/dev/null || true fi rm -f "$port_file" "$error_file" "$output_file" rmdir "$state_dir" } trap cleanup EXIT INT TERM "$fixture" >"$port_file" 2>"$error_file" & server_pid=$! attempt=0 while [ ! -s "$port_file" ]; do attempt=$((attempt + 1)) if [ "$attempt" -gt 100 ]; then echo "fixture did not publish its port" >&2 exit 1 fi sleep 0.02 done port=$(sed -n '1p' "$port_file") HAX_LLAMACPP_BASE_URL="http://127.0.0.1:$port/v1" \ "$hax" -p --no-session --raw --provider=llamacpp --model=gem-test hello >"$output_file" wait "$server_pid" server_pid= test "$(tr -d '\r\n' <"$output_file")" = "native hax ok"