#!/usr/bin/env bash
set -uo pipefail

ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
BS="$ROOT/lib/buildslot.sh"
TMP=$(mktemp -d "$HOME/.cache/buildslot-supervisor-XXXXXX")
trap 'rm -rf "$TMP"' EXIT
mkdir -p "$TMP/home" "$TMP/slots" "$TMP/job"

set +e
out=$(HOME="$TMP/home" BUILD_SLOT_DIR="$TMP/slots" BUILD_SLOTS=1 BUILD_SLOT_FIXED=1 \
  BUILD_SUPERVISOR_AFTER_ADMISSION=1 COMMAND_SUPERVISOR_BIN="$ROOT/lib/command-supervisor.mjs" \
  COMMAND_SUPERVISOR_JOB_DIR="$TMP/job" /usr/bin/bash "$BS" /usr/bin/bash -c 'printf "%s\\n" supervised' 2>"$TMP/err")
rc=$?
set -e
if [ "$rc" -ne 0 ] || [ "$out" != supervised ]; then
  printf 'FAIL admitted command did not run through supervisor (rc=%s output=%s)\n' "$rc" "$out" >&2
  cat "$TMP/err" >&2
  exit 1
fi
[ "$(cat "$TMP/job/rc")" = 0 ] || { echo "FAIL supervisor rc receipt" >&2; exit 1; }
grep -q '"phase":"completed"' "$TMP/job/state.json" || { echo "FAIL supervisor state receipt" >&2; exit 1; }
printf 'buildslot post-admission supervisor test passed\n'
