#!/usr/bin/env bash

# A [hooks].postinstall hook must see the version `mise upgrade` just installed
# on PATH, not the one the fuzzy runtime symlink still points at (#14842)

mise install dummy@1.0.0

cat <<EOT >mise.toml
[tools]
dummy = "1"

[hooks]
postinstall = "echo HOOK_PATH=\$PATH"
EOT

output=$(mise upgrade dummy 2>&1)
assert_contains "echo '$output'" "HOOK_PATH="
assert_contains "echo '$output'" "installs/dummy/1.1.0/bin"
assert_not_contains "echo '$output'" "installs/dummy/1/bin"

# A lockfile pinning the old version must not make the hook see it either
rm -rf "$MISE_DATA_DIR/installs/dummy"
mise install dummy@1.0.0
cat <<EOT >mise.toml
[tools]
dummy = "1"

[settings]
lockfile = true

[hooks]
postinstall = "echo HOOK_PATH=\$PATH"
EOT
cat <<EOT >mise.lock
[[tools.dummy]]
version = "1.0.0"
backend = "asdf:dummy"
EOT
output=$(mise upgrade dummy 2>&1)
assert_contains "echo '$output'" "installs/dummy/1.1.0/bin"
assert_not_contains "echo '$output'" "installs/dummy/1/bin"
assert_not_contains "echo '$output'" "installs/dummy/1.0.0/bin"

# upgrade --bump installs a new selector while the config still holds the old one
rm -rf "$MISE_DATA_DIR/installs/dummy" mise.lock
mise install dummy@1.0.0
cat <<EOT >mise.toml
[tools]
dummy = "1"

[hooks]
postinstall = "echo HOOK_PATH=\$PATH"
EOT
output=$(mise upgrade --bump dummy 2>&1)
assert_contains "echo '$output'" "installs/dummy/2.0.0/bin"
assert_not_contains "echo '$output'" "installs/dummy/1/bin"
