40 lines
972 B
Bash
Executable file
40 lines
972 B
Bash
Executable file
#!/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"
|