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

ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
mkdir -p "$HOME/.cache"
TMP=$(mktemp -d "$HOME/.cache/remote-runner-path-XXXXXX")
trap 'rm -rf "$TMP"' EXIT

mkdir -p "$TMP/home/.cargo/bin" "$TMP/home/.config/environment.d" "$TMP/job" "$TMP/mirror"
: > "$TMP/mirror/composer.lock"
cat > "$TMP/home/.cargo/bin/cargo" <<'EOF'
#!/usr/bin/env bash
printf 'cargo-from-rustup\n'
EOF
chmod +x "$TMP/home/.cargo/bin/cargo"
printf 'PATH=/usr/local/bin:/usr/bin:/bin\n' > "$TMP/home/.config/environment.d/10-base.conf"

HOME="$TMP/home" SUPERVISOR_BIN="$ROOT/lib/command-supervisor.mjs" bash "$ROOT/lib/remote-runner.sh" "$TMP/job" "$TMP/mirror" . cargo --version
rc=$(cat "$TMP/job/rc")
out=$(cat "$TMP/job/log")

if [ "$rc" != 0 ] || [ "$out" != cargo-from-rustup ]; then
  printf 'FAIL remote runner lost cargo after environment.d (rc=%s output=%s)\n' "$rc" "$out" >&2
  exit 1
fi
printf 'PASS remote runner preserves cargo after environment.d\n'

display_job="$TMP/job-display"
printf 'DISPLAY=:0\nWAYLAND_DISPLAY=wayland-0\n' > "$TMP/home/.config/environment.d/20-x11.conf"
HOME="$TMP/home" SUPERVISOR_BIN="$ROOT/lib/command-supervisor.mjs" bash "$ROOT/lib/remote-runner.sh" "$display_job" "$TMP/mirror" . bash -c 'test -z "${DISPLAY:-}"'
display_rc=$(cat "$display_job/rc")
display_out=$(cat "$display_job/log")
if [ "$display_rc" != 0 ]; then
  printf 'FAIL remote runner leaked DISPLAY (rc=%s output=%s)\n' "$display_rc" "$display_out" >&2
  exit 1
fi
printf 'PASS remote runner strips forwarded DISPLAY\n'

nonzero_job="$TMP/job-nonzero"
set +e
HOME="$TMP/home" SUPERVISOR_BIN="$ROOT/lib/command-supervisor.mjs" bash "$ROOT/lib/remote-runner.sh" "$nonzero_job" "$TMP/mirror" . bash -c 'exit 7'
nonzero_rc=$?
set -e
nonzero_receipt=$(cat "$nonzero_job/rc" 2>/dev/null || true)
if [ "$nonzero_rc" -ne 7 ] || [ "$nonzero_receipt" != 7 ]; then
  printf 'FAIL remote runner nonzero receipt (process_rc=%s receipt=%s)\n' "$nonzero_rc" "$nonzero_receipt" >&2
  exit 1
fi
printf 'PASS remote runner preserves nonzero receipt\n'

term_job="$TMP/job-term"
set +e
HOME="$TMP/home" SUPERVISOR_BIN="$ROOT/lib/command-supervisor.mjs" bash "$ROOT/lib/remote-runner.sh" "$term_job" "$TMP/mirror" . bash -c 'kill -TERM "$PPID"; exit 0'
term_rc=$?
set -e
receipt=$(cat "$term_job/rc" 2>/dev/null || true)
if [ "$term_rc" -ne 143 ] || [ "$receipt" != 143 ]; then
  printf 'FAIL remote runner TERM receipt (process_rc=%s receipt=%s)\n' "$term_rc" "$receipt" >&2
  exit 1
fi
printf 'PASS remote runner writes truthful TERM receipt\n'

declared_job="$TMP/job-declared"
set +e
SUPERVISOR_MODE=declared SUPERVISOR_LEASE_MS=1000 SUPERVISOR_TERMINAL_GRACE_MS=100 \
  HOME="$TMP/home" SUPERVISOR_BIN="$ROOT/lib/command-supervisor.mjs" \
  bash "$ROOT/lib/remote-runner.sh" "$declared_job" "$TMP/mirror" . \
  bash -c 'printf "%s\n" "{\"seq\":1,\"type\":\"terminal\",\"lease_ms\":1000,\"rc\":0}" >&3; sleep 0.1'
declared_rc=$?
set -e
declared_receipt=$(cat "$declared_job/rc" 2>/dev/null || true)
if [ "$declared_rc" -ne 0 ] || [ "$declared_receipt" != 0 ]; then
  printf 'FAIL remote runner declared protocol (process_rc=%s receipt=%s)\n' "$declared_rc" "$declared_receipt" >&2
  exit 1
fi
printf 'PASS remote runner propagates declared supervisor mode\n'

# A harness seat transport is Bash/Podman plumbing and must not be blocked by an unrelated
# workspace dependency install. The exemption is exact to the per-run runtime path; an ordinary
# command in the same pnpm workspace still hits the normal dependency preflight.
seat_home="$TMP/seat-home"
seat_mirror="$TMP/seat-mirror"
seat_job="$TMP/job-seat"
mkdir -p "$seat_home/.local/bin" "$seat_home/.config/environment.d" \
  "$seat_mirror/.harness-seat/run-123/runtime/seat"
printf '%s\n' 'lockfileVersion: "9.0"' > "$seat_mirror/pnpm-lock.yaml"
printf '%s\n' '{"name":"seat-preflight-fixture","private":true}' > "$seat_mirror/package.json"
seat_runner="$seat_mirror/.harness-seat/run-123/runtime/seat/seat-run.sh"
cat > "$seat_runner" <<'SH'
#!/usr/bin/env bash
printf '%s\n' seat-run-executed
SH
chmod 0755 "$seat_runner"
pnpm_marker="$TMP/pnpm-called"
cat > "$seat_home/.local/bin/pnpm" <<'SH'
#!/usr/bin/env bash
printf '%s\n' called >> "${PNPM_CALLED:?}"
exit 99
SH
chmod 0755 "$seat_home/.local/bin/pnpm"
HOME="$seat_home" PNPM_CALLED="$pnpm_marker" SUPERVISOR_BIN="$ROOT/lib/command-supervisor.mjs" \
  bash "$ROOT/lib/remote-runner.sh" "$seat_job" "$seat_mirror" . "$seat_runner"
seat_rc=$(cat "$seat_job/rc")
seat_out=$(cat "$seat_job/log")
if [ "$seat_rc" != 0 ] || [ -e "$pnpm_marker" ] || [[ "$seat_out" != *"seat transport skips workspace dependency install"* ]] || [[ "$seat_out" != *seat-run-executed* ]]; then
  printf 'FAIL remote runner seat exemption (rc=%s pnpm=%s output=%s)\n' "$seat_rc" "$([ -e "$pnpm_marker" ] && echo called || echo not-called)" "$seat_out" >&2
  exit 1
fi
printf 'PASS remote runner skips workspace deps only for exact seat transport\n'

ordinary_job="$TMP/job-ordinary-pnpm"
set +e
HOME="$seat_home" PNPM_CALLED="$pnpm_marker" SUPERVISOR_BIN="$ROOT/lib/command-supervisor.mjs" \
  bash "$ROOT/lib/remote-runner.sh" "$ordinary_job" "$seat_mirror" . /bin/true
ordinary_rc=$?
set -e
ordinary_receipt=$(cat "$ordinary_job/rc" 2>/dev/null || true)
if [ "$ordinary_rc" -ne 99 ] || [ "$ordinary_receipt" != 99 ] || [ ! -e "$pnpm_marker" ]; then
  printf 'FAIL remote runner ordinary command bypassed deps (process_rc=%s receipt=%s marker=%s)\n' \
    "$ordinary_rc" "$ordinary_receipt" "$([ -e "$pnpm_marker" ] && echo yes || echo no)" >&2
  exit 1
fi
printf 'PASS remote runner keeps dependency preflight for ordinary commands\n'
