#!/usr/bin/env bash

# Test that `mise lock` creates separate lockfiles for env-specific configs

export MISE_LOCKFILE=1

echo "=== Testing mise lock creates separate env lockfile ==="

cat >mise.toml <<'EOF'
[tools]
tiny = "1"
EOF

cat >mise.test.toml <<'EOF'
[tools]
"aqua:jqlang/jq" = "1.7.1"
EOF

rm -f mise.lock mise.test.lock

# Install tiny so it's available
assert "mise install tiny@1.0.1"

# Run mise lock with MISE_ENV=test so mise.test.toml is loaded
assert "MISE_ENV=test mise lock --platform linux-x64"

# The base tool should be in mise.lock
assert_contains "cat mise.lock" '[[tools.tiny]]'
assert_contains "cat mise.lock" 'version = "1.0.1"'
# mise.lock should NOT contain the env-specific tool
assert_not_contains "cat mise.lock" 'jqlang/jq'
# mise.lock should NOT have any env field
assert_not_contains "cat mise.lock" 'env = '

# The env-specific tool should be in mise.test.lock
assert_contains "cat mise.test.lock" 'jqlang/jq'
# mise.test.lock should NOT have env field (env is encoded in filename now)
assert_not_contains "cat mise.test.lock" 'env = '

echo "=== Testing mise lock without MISE_ENV creates only mise.lock ==="

rm -f mise.lock mise.test.lock mise.test.toml

# With only mise.toml and no MISE_ENV, there should be only mise.lock
assert "mise lock --platform linux-x64"
assert_contains "cat mise.lock" 'version = "1.0.1"'
assert_not_contains "cat mise.lock" 'env = '
# No env-specific lockfile should be created
assert_fail "test -f mise.test.lock"

echo "=== Cleanup ==="
rm -f mise.lock mise.test.lock mise.toml mise.test.toml

echo "mise lock env tests passed!"
