#!/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.

# With depends, needs-dummy waits for dummy even though it is listed first.
cat <<EOF >mise.toml
[tools]
needs-dummy = { version = "1.0.0", depends = ["dummy"] }
dummy = "2.0.0"
EOF

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

assert "MISE_JOBS=1 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"
