#!/usr/bin/env bash
# Exact Go parity must converge the toolchain Subrouter's pinned worker requires.
set -euo pipefail

CHECKS="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/lib/buildbox-checks.sh"
WORK="$(mktemp -d)"
trap 'rm -rf "$WORK"' EXIT
fail=0
check() {
  if [ "$2" = "$3" ]; then printf 'ok   %s\n' "$1"
  else printf 'FAIL %s\n  want: %s\n  got:  %s\n' "$1" "$3" "$2"; fail=1
  fi
}

eval "$(python3 - "$CHECKS" <<'PY'
from pathlib import Path
import sys

lines = Path(sys.argv[1]).read_text(encoding="utf-8").splitlines()
start = next(i for i, line in enumerate(lines) if line == "item_go() {")
end = next(i for i in range(start + 1, len(lines)) if lines[i] == "}")
print("\n".join(lines[start:end + 1]))
PY
)"

mkdir -p "$WORK/bin"
printf 'go version go1.23.0 linux/amd64\n' >"$WORK/version"
cat >"$WORK/bin/go" <<'EOF'
#!/usr/bin/env bash
cat "$GO_TEST_ROOT/version"
EOF
cat >"$WORK/bin/mise" <<'EOF'
#!/usr/bin/env bash
printf '%s\n' "$*" >"$GO_TEST_ROOT/mise-args"
if [ "$1" = use ] && [ "${MISE_STALE:-0}" != 1 ]; then
  printf 'go version go1.24.0 linux/amd64\n' >"$GO_TEST_ROOT/version"
fi
EOF
chmod 755 "$WORK/bin/go" "$WORK/bin/mise"
export GO_TEST_ROOT="$WORK"
export PATH="$WORK/bin:/usr/bin:/bin"
GO_VERSION=1.24.0
ok() { printf 'OK %s %s\n' "$1" "$2"; }
bad() { printf 'DRIFT %s %s\n' "$1" "$2"; }
fixed() { printf 'FIXED %s %s\n' "$1" "$2"; }

MODE=audit
check "version skew is drift" "$(item_go)" "DRIFT go want go1.24.0, have go version go1.23.0 linux/amd64"
MODE=bootstrap
check "stale mise result remains drift" "$(MISE_STALE=1 item_go)" "DRIFT go mise installed wrong version (want go1.24.0, got go version go1.23.0 linux/amd64)"
check "bootstrap converges exact version" "$(item_go)" "FIXED go go1.24.0"
check "mise receives exact version" "$(cat "$WORK/mise-args")" "use -g go@1.24.0"
MODE=audit
check "exact version audits clean" "$(item_go)" "OK go go1.24.0"

exit "$fail"
