#!/usr/bin/env bash

# Test for cross-platform lockfile generation
# This tests that mise lock can generate platform-specific URLs for all platforms
# even when running on a different platform (e.g., generating linux URLs from macOS)

export MISE_LOCKFILE=1

echo "=== Testing cross-platform URL generation ==="

# Create a mise.toml with an aqua tool
cat <<EOF >mise.toml
[tools]
"aqua:jqlang/jq" = "1.7.1"
EOF

rm -f mise.lock

# Generate lockfile for all default platforms
mise lock

echo "Generated lockfile:"
cat mise.lock

# Verify each platform has correct URLs
# jq uses different filenames for each platform
assert_contains "cat mise.lock" "jq-linux-amd64"
assert_contains "cat mise.lock" "jq-linux-arm64"
assert_contains "cat mise.lock" "jq-macos-amd64"
assert_contains "cat mise.lock" "jq-macos-arm64"
assert_contains "cat mise.lock" "jq-windows-amd64.exe"

# Verify all 5 default platforms are present
assert_contains "cat mise.lock" "platforms.linux-x64"
assert_contains "cat mise.lock" "platforms.linux-arm64"
assert_contains "cat mise.lock" "platforms.macos-x64"
assert_contains "cat mise.lock" "platforms.macos-arm64"
assert_contains "cat mise.lock" "platforms.windows-x64"

echo "=== Testing selective platform generation ==="
rm -f mise.lock

# Generate only for specific platforms
mise lock --platform linux-x64,windows-x64

# Should only have the requested platforms
assert_contains "cat mise.lock" "platforms.linux-x64"
assert_contains "cat mise.lock" "platforms.windows-x64"
assert_not_contains "cat mise.lock" "platforms.macos-arm64"
assert_not_contains "cat mise.lock" "platforms.macos-x64"

echo "=== Testing URL validity ==="
rm -f mise.lock
mise lock --platform linux-x64

# URLs should be proper GitHub release URLs
assert_contains "cat mise.lock" "https://github.com/jqlang/jq/releases/download"

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

echo "Cross-platform lockfile tests passed!"
