#!/usr/bin/env bash

# Test HTTP backend with version_list_url (using claude-code from registry)
#
# This is intentionally a "fast" test (no binary download); install coverage for the
# http backend is handled in other `e2e/backend/test_http*` tests.

# Ensure this exercises the registry `version_list_url` directly (not versions host cache)
export MISE_USE_VERSIONS_HOST=0

# Test that ls-remote works with version_list_url
assert_contains "mise ls-remote claude" "2."

# Test that `mise latest` matches upstream `/latest` (regression for stale `/stable`)
LATEST="$(curl -fsSL https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/latest | tr -d '\r\n')"
if [[ -z ${LATEST//[[:space:]]/} ]]; then
	fail "upstream claude-code /latest returned empty response"
fi
if [[ ! $LATEST =~ ^[0-9]+\.[0-9]+\.[0-9]+ ]]; then
	fail "upstream claude-code /latest returned unexpected value: '$LATEST'"
fi
assert "mise latest claude" "$LATEST"

# Test that ls-remote works without registry or installed tool
cat <<EOF >mise.toml
[tools."http:zmx"]
version = "0.2.0"
version_list_url = "https://api.github.com/repos/neurosnap/zmx/tags"
version_json_path = ".[].name"
url = "https://zmx.sh/a/zmx-{{version}}-{{os()}}-{% if arch() == 'arm64' %}aarch64{% else %}x86_64{% endif %}.tar.gz"
EOF

mise cache clear
assert_contains "mise ls-remote http:zmx" "0.2.0"
