#!/usr/bin/env bash

export MISE_LOCKFILE=1

detect_platform

# === Test 1: Setting restricts auto-lock platforms ===
export MISE_LOCKFILE_PLATFORMS=macos-arm64,linux-x64

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

touch mise.lock
mise install
assert_contains "cat mise.lock" "platforms.macos-arm64"
assert_contains "cat mise.lock" "platforms.linux-x64"
assert_contains "cat mise.lock" "platforms.$MISE_PLATFORM"
assert_not_contains "cat mise.lock" "platforms.windows-x64"

# === Test 2: Setting restricts mise lock without --platform ===
rm -f mise.lock
touch mise.lock
mise lock
assert_contains "cat mise.lock" "platforms.macos-arm64"
assert_contains "cat mise.lock" "platforms.linux-x64"
assert_not_contains "cat mise.lock" "platforms.windows-x64"

# === Test 3: --platform flag overrides the setting ===
rm -f mise.lock
mise lock --platform windows-x64
assert_contains "cat mise.lock" "platforms.windows-x64"

# === Test 4: Setting via mise.toml ===
unset MISE_LOCKFILE_PLATFORMS

cat <<EOF >mise.toml
[settings]
lockfile_platforms = ["macos-arm64", "linux-x64"]

[tools]
"aqua:jqlang/jq" = "1.7.1"
EOF

rm -f mise.lock
touch mise.lock
mise lock
assert_contains "cat mise.lock" "platforms.macos-arm64"
assert_contains "cat mise.lock" "platforms.linux-x64"
assert_not_contains "cat mise.lock" "platforms.windows-x64"

# === Test 5: mise use respects lockfile_platforms setting ===
export MISE_LOCKFILE_PLATFORMS=macos-arm64,linux-x64

cat <<EOF >mise.toml
[tools]
EOF

rm -f mise.lock
touch mise.lock
mise use "aqua:jqlang/jq@1.7.1"
assert_contains "cat mise.lock" "platforms.macos-arm64"
assert_contains "cat mise.lock" "platforms.linux-x64"
assert_not_contains "cat mise.lock" "platforms.windows-x64"
