#!/usr/bin/env bash

mkdir -p "$MISE_DATA_DIR/installs/github-jdx-mise-test-fixtures/1.0.0/bin"
mkdir -p "$MISE_DATA_DIR/installs/github-jdx-mise-test-fixtures/latest/bin"
mkdir -p "$MISE_DATA_DIR/installs/node/latest/bin"
cat <<'EOF' >"$MISE_DATA_DIR/installs/.mise-installs.toml"
[github-jdx-mise-test-fixtures]
short = "github:jdx/mise-test-fixtures"
full = "github:jdx/mise-test-fixtures"
explicit_backend = true
EOF

# The retired startup migration no longer repairs stale directories during a
# read-only listing. Keep that listing passive: an install is the operation
# that rebuilds the selector link from the concrete install.
mise ls github:jdx/mise-test-fixtures >/dev/null
stale_latest="$MISE_DATA_DIR/installs/github-jdx-mise-test-fixtures/latest"
assert "test -d '$stale_latest'"
assert "test ! -L '$stale_latest'"

mise install github:jdx/mise-test-fixtures@1.0.0
output=$(mise ls github:jdx/mise-test-fixtures)
link_target=$(readlink "$stale_latest")
assert "test '$link_target' = ./1.0.0"
assert "test -d '$MISE_DATA_DIR/installs/node/latest'"
assert "test ! -L '$MISE_DATA_DIR/installs/node/latest'"
if [[ $output == *latest* ]]; then
  fail "mise ls included stale latest entry: $output"
fi
if [[ $output != *1.0.0* ]]; then
  fail "mise ls did not include concrete version: $output"
fi
