#!/usr/bin/env bash

# Test that user-specified `depends` field in tool options controls install ordering.
# Uses the `needs-dummy` plugin whose install script checks that dummy is already
# installed on disk — simulating a real runtime dependency like pipx:ruff needing python.

# First: WITHOUT depends, needs-dummy can fail because dummy may not be installed yet
cat <<EOF >mise.toml
[tools]
dummy = "2.0.0"
needs-dummy = "1.0.0"
EOF

rm -rf "$MISE_DATA_DIR/installs/dummy"
rm -rf "$MISE_DATA_DIR/installs/needs-dummy"

assert_fail "mise install"

# Now: WITH depends, needs-dummy waits for dummy to finish first
cat <<EOF >mise.toml
[tools]
dummy = "2.0.0"
needs-dummy = { version = "1.0.0", depends = ["dummy"] }
EOF

rm -rf "$MISE_DATA_DIR/installs/dummy"
rm -rf "$MISE_DATA_DIR/installs/needs-dummy"

assert "mise install"

assert_contains "mise ls --installed dummy" "2.0.0"
assert_contains "mise ls --installed needs-dummy" "1.0.0"

# Test that circular dependencies are detected
cat <<EOF >mise.toml
[tools]
dummy = { version = "2.0.0", depends = ["needs-dummy"] }
needs-dummy = { version = "1.0.0", depends = ["dummy"] }
EOF

rm -rf "$MISE_DATA_DIR/installs/dummy"
rm -rf "$MISE_DATA_DIR/installs/needs-dummy"

assert_fail "mise install"
